Javascript计时器不起作用
Javascript timer not working..
这是我的代码,请告诉我我在哪里犯了错误,这样我就可以从中吸取教训,并希望它:)工作。
这是 html:
<input type="text" id="txt" />
<input type="button" value="Start Timer" onclick="startTimer()" />
这是javascript:
var Timer = 120;
var checkTimer = false;
var t;
function countDown(){
doucment.getElementById("txt").value = Timer;
Timer--;
t = setTimeout("countDown();", 1000);
}
function startTimer(){
if(!checkTimer){
checkTimer = true;
countDown();
}
else{
console.log("Error!");
}
}
在这个小提琴中查看你的代码
让我偶然发现了一些事情,
- 未
- 找到
onclick
中的startTimer()
。 -
doucment
!==document
正如斯特林·阿切尔所指出
的那样 - 字符串 eval 可以更改为
t = setTimeout(countDown, 1000);
斯特林·阿切尔也指出了这一点
现在让我们进入解决方案。
.HTML
<input type="text" id="txt" />
<!-- Removed the onclick attribute and added an ID for the eventListener -->
<input type="button" value="Start Timer" id="start" />
.JS
//Event listener for the button. Same as the onClick, this one, however, does work.
document.getElementById("start").addEventListener("click", startTimer, false);
var Timer = 120;
var checkTimer = false;
var t;
function countDown() {
document.getElementById("txt").value = Timer;
Timer--;
t = setTimeout(countDown, 1000);
}
function startTimer() {
if (!checkTimer) {
checkTimer = true;
countDown();
} else {
console.log("Error!");
}
}
我所做的是:
- 我添加了一个事件侦听器来应对
startTimer()
"找不到"错误 - 我已将
doucment
更改为document
- 我已将您的字符串评估更改为
t = setTimeout(countDown, 1000);
希望这有帮助!
你有一个错别字。你应该有document.getElementById("txt")
而不是doucment.getElementById("txt")
.试试这个:
var Timer = 120;
var checkTimer = false;
var t;
function countDown() {
document.getElementById("txt").value = Timer;
Timer--;
t = setTimeout("countDown();", 1000);
}
function startTimer() {
if (!checkTimer) {
checkTimer = true;
countDown();
} else {
console.log("Error!");
}
}
更新:如果您希望计时器停止在零,则需要添加一个 if 语句以查看计时器是否大于 0,然后再递减计时器。那看起来像这样:
.HTML:
<input type="text" id="txt" />
<input type="button" value="Start Timer" onclick="startTimer()" />
.JS:
var Timer = 120;
var checkTimer = false;
var t;
function countDown() {
document.getElementById("txt").value = Timer;
if (Timer > 0){
Timer--;
}
t = setTimeout("countDown();", 1000);
}
function startTimer() {
if (!checkTimer) {
checkTimer = true;
countDown();
} else {
console.log("Error!");
}
}
演示:https://jsfiddle.net/hopkins_matt/moks2oyb/
可以对此代码进行进一步的改进,但这是为了说明一旦修复错误,您的代码将正常工作。
相关文章:
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- Asp自定义验证器在IE-11中不起作用
- 动态填充Bootstrap选择选择器:change event dos'不起作用
- 用于播放背景音乐的嵌入式flash播放器在IE浏览器中不起作用
- Focus()在任何导航器中都不起作用
- 添加事件侦听器不起作用
- jQuery日期选择器在Codeigniter和Bootsrap模式表单中不起作用
- JQuery日期选择器在IE 7上不起作用
- 棱角分明的日期选择器;在ngDialog中不起作用
- 想制作一个基于URL的音频播放器,但Javascript不起作用
- JavaScript onChange 事件侦听器对输入表单不起作用
- jQuery选择器在脚本中不起作用,但在控制台中工作
- jQuery计时器对输入不起作用
- 计时器间隔不起作用 Javascript
- Javascript 倒数计时器在 Safari 或 IE 上不起作用
- 带有JavaScript的倒数计时器在Smarty中不起作用
- 我正在进行在线测试,一切都完成了.但是我的自动提交计时器不起作用
- Javascript计时器不起作用
- 当设置在计时器内时,HTML5全屏不起作用
- React componentDidMount()中使用条件计时器间隔不起作用