var arr=[]
var chz=odiv.offsetLeft
var timer=null
for(var i=20i>0i=i-2){
arr.push(i,-i)
}
arr.push(0)
var num=0
odiv.onclick=function(){
//var num=0为什么放在这就可以重复的点击有效;放在上面只能点一次;num不是应该能按作用域链找上去的吗?
timer=setInterval(function(){
odiv.style.left=chz+arr[num]+'px'
num++
if(num==arr.length){
clearInterval(timer)
}
},30)
console.log(num)
}
我在代码中加入了console.log(num),你可打开控制台,看看不同情况输出的num值。
其实就是你把num变量放在函数中,是局部变量,每次单击的时候,都会重新赋值0再开始运行下面的代码,所以是可以重复点击。
而放在上面,是全局变量,每次单击后会根据你下面的代码num++而不同了,根据你写的代码,自然就没有效果啦。
变量是存在但是值是否一运行就存在?对网页不是很清楚,但是看你的赋值我想运行时那里还没有值吧
可以给 text1 绑定一事件,当 text1 的量变后重新赋值 a 变量
<script>var a=100
function A(){return a--}
function B(){setTimeout(A,2000)}
function C(){document.getElementById("main").innerHTML='显示'+a+'变量'}
</script>
<button onClick=B()>按钮1</button>
<button onClick=C()>按钮2</button>
<div id="main"></div>