ChangeZ_ 2011-03-19 17:46
浏览 231
已采纳

关于javascript的一个问题

 

<a href="" id="preday">上一天</a>&nbsp;
<a href="<%=basePath%>pages/zhbg/rc/powerdata/RCList2.jsp?q_FBSJ=<%=new TimeUtil().getToday()%>" id="today">今天</a>&nbsp;
<a href="<%=basePath%>pages/zhbg/rc/powerdata/RCList2.jsp?q_FBSJ=<%=new TimeUtil().PreOrNextDay("+")%>" id="nextday">下一天</a>
<script type="text/javascript">
var url="<%=basePath%>pages/zhbg/rc/powerdata/RCList2.jsp?q_FBSJ=";
document.getElementById("preday").href=url+PreOrNextDay("-");
</script>

 这是一个测试页面。

参数q_FBSJ是一个日期值,用于向数据库中查询对应日期的数据。

刚开始的时候,本来打算用java的日期方法来控制参数,来得到上一天,今天,下一天的数据。但是我发现一个问题是即使不点击,上一天,下一天。

上一天和下一天对应的参数值也会变。

所以我就打算用javascript来控制日期参数,但是问题又出来了。每次点击上一天之后,相当于重新刷新了一次页面(因为向数据库请求了数据。),刷新页面之后,javascript的日期值又变回原样了。也就是说只能用“上一天”看到昨天的数据(始终是昨天的数据,因为参数一直不变),而看不到前天和大前天的数据。

我的javascript日期值是全局变量,在单页面上测试没问题,参数是一直变的。

下面是单页面的内容。(不重要的代码没有写上)

 

<html>
    <head>
        <script type="text/javascript">
    var currDT = new Date();

    //增加或减少一天,由ope决定, + 为加,- 为减,否则不动
    function PreOrNextDay(ope) {
        var num = 0;
        if (ope == "-") {
            num = -1;
        } else if (ope == "+") {
            num = 1;
        }
        var y = currDT.getYear();//年
        var m = currDT.getMonth();//月
        var lastDay = getLastDay(y, m); //每个月是多少天
        var d = currDT.getDate();//日
        d += num;
        if (d < 1) {
            m--;
            if (m < 0) {
                y--;
                m = 11;
            }
            d = getLastDay(y, m);
        } else if (d > lastDay) {
            m++;
            if (m > 11) {
                y++;
                m = 0;
            }
            d = 1;
        }
        currDT.setYear(y);
        currDT.setMonth(m);
        currDT.setDate(d);
        alert(currDT);
        return currDT;
    }
</script>
    </head>

    <body>
        <!--加载时初始页面-->

        <script type="text/javascript">           
            
       </script>

        <a href="javascript:void(0)" onclick="addOneDay('+')">add</a>
        <a href="javascript:void(0)" onclick="addOneDay('-')">dep</a>

    </body>

</html>
  • 写回答

2条回答 默认 最新

  • iteye_2443 2011-03-21 10:30
    关注

    我说用Java计算日期是这样的
    你只需要传入currDT和flag(前一天\后一天)比如 2011-3-20
    然后一个Java方法获得在currDT基础上的前一天 2011-3-19
    接着查询数据,同时currDT变为2011-3-19,保存到页面
    request.setAttribute("",currDT);

    这个时候,页面的currDT是2011-3-19
    你再点击前一天,传入后台的currDT就是 2011-3-19 前一天就是 2011-3-18
    返回前台的currDT就是 2011-3-18

    后一天同理

    查询今天,直接做另一个数据查询方法

    js也一样
    页面始终要返回一个后台查询数据的日期作为currDT
    比如,初始查询的时候 currDT=2011-3-20
    点击前一天,js得到 2011-3-19 传递到后台 ,后台查询数据 并保存currDT=2011-3-19
    到页面,页面点击后一天,js得到 2011-3-20 传递到后台查询

    不知道楼主怎么理解的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题