var firsty = document.getElementById("txtYear").value;
这句代码没有放在函数里的话,就是打开页面立即执行,此时txtYear可能都还没被浏览器加载,所以出错。
建议,放在body的onload里面执行

解决方案 »

  1.   

    呵呵,我知道是什么原因了,给大家也说说吧。
    在定义全局变量的时候要特别谨慎,因为js全局变量里
    var firsty = document.getElementById("txtYear").value;//最开始的加载页面时年和月 
        var firstm = document.getElementById("txtMonth").value; 
        
        var secondy = document.getElementById("txtYear").value;//当onchange触发后的值 
        var secondm = document.getElementById("txtMonth").value; 
    从来都没有被js函数所调用过,所以就没有办法给全局变量赋值,所以,你必须要给全局变量赋值,于是在页面的onload中调用一个函数给他赋值就可以了。
    把我的正确答案也发上来,供大家分享下,虽然大多数都会,呵呵。分不多,自己解决的,回帖者都有分吧var firsty;
        var firstm;
        var secondy;
        var secondm;
        var panduan=0;//判断改变了没有
        
        function onloadload()
        {
            firsty = document.getElementById("txtYear").value;//最开始的加载页面时年和月
            firstm = document.getElementById("txtMonth").value;
        
            secondy = document.getElementById("txtYear").value;//当onchange触发后的值
            secondm = document.getElementById("txtMonth").value;
        }
        
        function changeym()//onchange事件触发
        {
            secondy = document.getElementById("txtYear").value;
            secondm = document.getElementById("txtMonth").value;
            if(parseInt(secondy,10) != parseInt(firsty,10) || parseInt(secondm,10) != parseInt(firstm,10))//之所以转化是考虑到了月份3和03的区别
            {
                panduan=1;//有变化
            }
            else
            {
                firsty=secondy;//进行赋值,为的是变化后在进行变化
                firstm=secondm;
            }
        }
        
        function onluris()
        {
            if(panduan == 1)
            {
                alert('重新检索数据!');
                document.getElementById("btnCurPayLoad").click();
            }
        }在页面的onload函数里调用onloadload()函数即可
      

  2.   

    不过我不推荐使用onload 
     好似有时候页面出错的话. onload 不会被执行,
      

  3.   

    用得对的哦。至于你说的不对,是显示不了日期,还是日期不对呢,对于js,要一点一点的调试,还有就是想楼上说的,得看js位置对不
    函数执行没?