Posted in Javascript onJanuary 01, 2011
正确源程序如下:
<script type="text/javascript"> var lastTime = 3; function abc() { var btnReg = document.getElementById("btnReg"); if (!btnReg) { return; } if (lastTime <= 0) { btnReg.value = "同意"; btnReg.disabled = ""; clearInterval("TimeId"); } else { btnReg.value = "还剩下" + lastTime + "秒"; lastTime--; } } var TimeId = setInterval("abc()", 1000); </script>
我把第四行的 var btnReg = document.getElementById("btnReg")定义为全局变量btnReg = document.getElementById("btnReg");
并且放到函数abc()之外,程序实现不了功能了。
原因如下:浏览器解析Html页面是从上到下,解析到btnReg = document.getElementById("btnReg")时,id为btnReg的按钮还没被解析出来,所以全局变量btnReg的值为为定义,
又因为只执行了一次所以程序实现不了功能了,而正确的源程序每隔一秒就去取一次,等到button按钮解析出来后就可以去到值,程序就可以实现功能了。
javaScript同意等待代码实现心得
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@