今天想写一个验证码发送功能,但发现alert弹出的值是null,不知道怎么回事,百度了两圈后发现问题了,之前没接触过JS,以为和JAVA一样,所以有点云里雾里。
<html>
<head>
<title></title>
<script type="text/javascript">
//按钮对象, document.getElementById()
var time = 120; //120秒内不可以点击按钮
var btn = document.getElementById("btn");
btn.onclick = function Onclick(){
alert(btn)
btn.disabled = true;//让按钮残废
window.setInterval(Timewait,1000);
}
function Timewait(){
if(time>=0){
btn.value = "请" + time + "s后重新发送";
time = time-1;
}else{
btn.value = "重新发送验证码" //按钮信息
btn.disabled = false;//使按钮可以使用
time = 120;
clearInterval();//定时器停止计时
}
}
</script>
</head>
<body>
<input type="button" id="btn" value="获取验证码" />
</body>
</html>
运行后btn值为null
原因:js的执行是从上到下的,js就会在一开始执行,而要获取的id还在后面!所以就获取到的是null了!
解决方法一:
将JS代码块放到 <input type="button" id="btn" onclick = "Onclick()" value="获取验证码" />后面,这样就先将"btn"传给了id
解决方法二:
window.οnlοad=function(){ //winow.onload 等全文加载后再运行此代码
…
// 需要执行的代码
}