关于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个回答

我说用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 传递到后台查询

不知道楼主怎么理解的

给个思路
无论你用java控制日期还是js控制日期
指定一个当前日期 currDay ,这个有别于今天
在当前日期上来处理上一天,下一天
如果用java控制日期,初始查询的时候,currDay等于今天
每次服务端查询currDay都会变化,而且需要把currDay传递到客户端
客户端请求服务端查询传入currDay
例如:
今天是2011-3-19
初始查询传递参数 currDay=2011-3-19
服务端处理查询后,将currDay传递到客户端
此时,客户端点击前一天,那么java处理日期是在2011-3-19上来得到前一天的日期值2011-3-18,然后做查询,同时,currDay变为2011-3-18,传递到客户端

始终以作查询的日期作为currDay,如果要查询今天,那就获取系统当期日期

不知道我是否理解了lz的需求

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问