<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Document</title>
<style>
div{
width:10px;
height:10px;
background:red;
}
</style>
</head>
<body>
<div id="div1"></div>
</body>
<script>
var oDiv=document.getElementById("div1");
function slide(){
oDiv.style.width=oDiv.offsetWidth+2+"px";
}
timer=setInterval(slide,30);
if(oDiv.offsetWidth>100){
clearInterval(timer);
}
/*
if这样放在外面是错误的,达不到预期效果————到100时定时器无法清除
如果我将if放在 slide()里面就可以
比如:
var oDiv=document.getElementById("div1");
function slide(){
oDiv.style.width=oDiv.offsetWidth+2+"px";
if(oDiv.offsetWidth>100){
clearInterval(timer);
}
}
timer=setInterval(slide,30);
既然这样我发现我在做图片轮播的时候
如果加onmouseover就完全不好加了,有点蒙圈
各位给个意见咯
俯首拜谢
*/
oDiv.onmouseover=function(){
clearInterval(timer);
}
</script>
</html>
如一楼所说,if放在外面,它只执行一次,而且执行的时候oDiv.offsetWidth应该还没>100,js是顺序执行下来的,也就是说,你setInterval执行一次的时候,就接下去执行if了,但当setInterval执行第二次的时候,并不会再执行if,而是重复得执行slide,就是酱紫。
当然,你原来那样写,直接在外面清除定时器,一点问题没有,只不过你需要加个
还有一个问题很重要,在做条件判断的时候,要把if跟else写完整,true的时候才clearInterval,false才oDiv.style.width=oDiv.offsetWidth+2+"px";