在clearTimeout(fun);
函数下面添加setTimeout
时,它可以正常工作,但我无法遇到此代码的错误。
<!DOCTYPE html>
<html>
<body>
<button onclick="myFunction()">Try it</button>
<button onclick="myfunction()">click me</button>
<script>
function myFunction() {
var fun = setTimeout(function(){ alert("Hello"); }, 3000);
}
function myfunction(){
clearTimeout(fun);
}
</script>
</body>
</html>
答案 0 :(得分:7)
myFunction
作为变量在第二个myFunction
内无法访问,因为它是第一个fun
范围内的变量。 <script>
var fun;
function create() {
fun = setTimeout(function(){ alert("Hello"); }, 3000);
}
function cancel(){
clearTimeout(fun);
}
</script>
需要全局声明 - 或者在两个函数的父级别声明。
<Directory /var/www/FlaskApp/FlaskApp/static/>
Order allow,deny
Allow from all
Options -Indexes
</Directory>
作为附注,函数需要具有唯一的名称,否则第二个声明将覆盖第一个。
答案 1 :(得分:5)
这是因为标识符fun
仅包含 在包含的代码块中。
解决方案是您需要在函数之外声明它,这将使您能够在两个函数中使用标识符fun
。
此外,即使您的函数标识符由第一个'f'
区分,但最好为它们提供有意义的标识符,这些标识符可以通过以下方式轻松区分:眼睛。
<!DOCTYPE html>
<html>
<body>
<button onclick="start()">Try it</button>
<button onclick="end()">click me</button>
<script>
var fun;
function start() {
fun = setTimeout(function(){ alert("Hello"); }, 3000);
}
function end(){
clearTimeout(fun);
}
</script>
</body>
</html>