老师我有一个问题
来源:1-21 编程练习
蛋挞狂魔
2020-12-13 00:10:34
# 具体遇到的问题
请问为什么定时器的id要在事件外先定义才可以实现后面清除定时器的功能?
如果我在点击事件中定义的话,就不是全局变量了吗?
如果我先点击了删除按钮,调用定时器之后不就产生了一个id变量吗,为什么在取消删除按钮的事件中无法接收到呢?
var a;
db.onclick = function(){
a = window.setTimeout(function(){
txt.innerText="";
}, 3000)
}
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>定时器</title>
<style type="text/css">
div{width:400px;height:120px;margin-top:50px;border:2px solid gray;padding:10px;}
</style>
</head>
<body>
<input type="button" value="删除">
<input type="button" value="取消删除">
<div>点击"删除"按钮后,里面的内容将在3秒钟后消失;<br/><br/>如点击了"删除"后又不想删除内容,请在点击"删除"按钮3秒之内点击"取消删除"按钮即可</div>
<script type="text/javascript">
//补充代码
var db = document.getElementsByTagName("input")[0];
var cdb = document.getElementsByTagName("input")[1];
var txt = document.getElementsByTagName("div")[0];
var a;
db.onclick = function(){
a = window.setTimeout(function(){
txt.innerText="";
}, 3000)
}
cdb.onclick = function(){
window.clearTimeout(a);
}
</script>
</body>
</html>
1回答
同学你好,这会涉及到后面阶段的内容,老师简单说一下,同学先提前作为了解。如下:
函数会形成一个局部作用域,在局部作用域中定义的变量叫做局部变量。而局部变量只能在当前函数中使用,外部拿不到。
所以事件函数中,如果使用var定义变量,那么只能在当前事件中使用,所以在另一个事件中拿不到这个变量哦。

祝学习愉快~
相似问题