<input type="number" id="number">
<button onlcick="countdown()">COUNTDOWN</button>
var t = document.getElementById('number').value;
function countdown() {
setTimeout(function(){alert("hi!");}, t);
}
</script>
我希望setTimeout
获得变量t
。变量t
将获得input
标记中的任何4位数字。按下按钮时,它将开始减去。但是,当我尝试按下按钮时,它不会这样做。
代码有问题吗?或者,这不是你怎么做的?
答案 0 :(得分:4)
您有2个错误,首先将onlcick
更改为onclick
,然后将t
变量添加到函数countdown
,因为您需要在点击后获取值,但在您的示例变量中将是空的
function countdown() {
var t = document.getElementById('number').value;
setTimeout(function(){alert("hi!");}, t);
}
此外,您可以清除超时,以便在点击后启动新计时器,如此
var timer;
function countdown() {
var t = document.getElementById('number').value;
clearTimeout(timer);
timer = setTimeout(function(){alert("hi!");}, t);
}
答案 1 :(得分:1)
主要问题:您需要在函数内部读取输入值:
function countdown() {
var t = document.getElementById('number').value;
setTimeout(function(){alert("hi!");}, t);
}
变量t
在页面加载时初始化,并且在输入值更改时不会自动更新。您有责任从输入中读取新值。
另一件事(可能只是一个错字)但是,属性应该是onclick
。
答案 2 :(得分:1)
按钮显示您的按钮应为<button onclick="countdown()">COUNTDOWN</button>
答案 3 :(得分:1)
定义超时指针
window.hTimeOut = null;
function countdown() {
重置之前调用但未完成的倒计时(超时)
if(window.hTimeOut!=null) clearTimeout(window.hTimeOut);
创建新超时
window.hTimeOut = setTimeout(function(){
alert("hi!");
完成后重置超时指针
window.hTimeOut!=null;
并将新的时间值传递给它
}, document.getElementById('number').value);
}