<html><head>
<script>
function setNDateDiff()
{
 var nowdate=new Date()
 var enddate=new Date("27 May 2012")
     datediff=enddate-nowdate
 var dayx=1000*60*60*24
 var hourx=1000*60*60
 var minx=1000*60
 var secx=1000
     day=Math.floor(datediff/dayx);
     hour=parseInt(datediff/hourx-day*24);
     min=parseInt(datediff/minx-day*24*60-hour*60);
     sec=parseInt(datediff/secx-day*24*60*60-hour*60*60-min*60);
     ndatediff="距离考试还有"+day+"天"+(hour<10?'0'+hour:hour)+"小时"+(min<10?'0'+min:min)+"分钟"+(sec<10?'0'+sec:sec)+"秒";
     document.write(ndatediff)
}
</script>
</head><body>
<script>
 setInterval("setNDateDiff()",1000)
</script>
</body>
</html>这段代码中用document.write()方法为什么不行呢?谁给解释下。

解决方案 »

  1.   

    你需要把 结果放到DOM元素里面,而不是每隔1秒打印document.write(ndatediff)到页面上。
      

  2.   

    示例:
    <html><head>
    <script>
    function setNDateDiff()
    {
     var nowdate=new Date()
     var enddate=new Date("27 May 2012")
         datediff=enddate-nowdate
     var dayx=1000*60*60*24
     var hourx=1000*60*60
     var minx=1000*60
     var secx=1000
         day=Math.floor(datediff/dayx);
         hour=parseInt(datediff/hourx-day*24);
         min=parseInt(datediff/minx-day*24*60-hour*60);
         sec=parseInt(datediff/secx-day*24*60*60-hour*60*60-min*60);
         ndatediff=day+"天"+(hour<10?'0'+hour:hour)+"小时"+(min<10?'0'+min:min)+"分钟"+(sec<10?'0'+sec:sec)+"秒";
         document.all['result'].innerText = ndatediff;
    }
    </script>
    </head><body>
    <script>
     setInterval("setNDateDiff()",1000)
    </script>
    距离考试还有<div id="result"></div>
    </body>
    </html>
      

  3.   

    在页面加载完成以后调用document.write()会新创建一个dom覆盖原来的页面,原来的页面代码也就不存在了还怎么运行。所以一般在页面加载完成后不会再调用document.write()方法