var i=setTimeout中的i为什么在函数中定义不起作用,要在函数外定义

来源:8-6 取消计时器clearTimeout()

qq_浮世_4

2016-11-18 11:59

var num=0;

function rec(){

document.getElementById("txt").value=num;

num+=1;

    var i=setTimeout(rec,300);

}

setTimeout(rec,300);

</script>

</head>

<body>

<input type="text" id="txt">

<input type="button" value="stop" onclick="clearTimeout(i)"/>

这样不行

var num=0,i;

function rec(){

document.getElementById("txt").value=num;

num+=1;

    i=setTimeout(rec,300);

}

setTimeout(rec,300);

</script>

</head>

<body>

<input type="text" id="txt">

<input type="button" value="stop" onclick="clearTimeout(i)"/>

这样就可以了,为什么

写回答 关注

2回答

  • 慕粉3116392
    2017-01-24 10:35:42

    你把var  i定义在一个函数内时这个变量就是个局部变量。局部变量只能是函数内调用。要想被其他的函数调用就必须把他设置成全局变量

  • 慕盖茨9219292
    2016-11-18 13:42:14

    作用域

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题