【发布时间】:2015-11-16 06:35:14
【问题描述】:
我试图在间隔 1 秒后突出显示每个菜单项。
它工作正常,但我面临最后一个菜单项的问题。我添加了
$(strtemp).removeClass("change"); 用于清除最后一个菜单项,但该行在 setInterval 函数执行之前执行。我无法理解为什么?
my.js
$(document).ready(function(){
$(".parent").click(function(){
str = "li:nth-child(";
strtemp="";
i=1;
var refreshID=setInterval(function(){
str1=str.concat(i);
str1=str1.concat(")");
str2=str.concat(i-1);
str2=str2.concat(")");
if($(str2).hasClass("change")){
$(str2).removeClass("change");
}
$(str1).addClass( "change" );
if(i==10){
strtemp=str1;clearInterval(refreshID);
}
i++;
}, 1000);
$(strtemp).removeClass("change");
});
});
index.html
<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="stylesheet.css"/>
<script type="text/Javascript" src="jquery.js"></script>
<script src="my.js"></script>
<title>My Jquery</title>
</head>
<body>
<div class="parent">
<ol>
<li>AAAAA</li>
<li>AAAAA</li>
<li>AAAAA</li>
<li>AAAAA</li>
<li>AAAAA</li>
<li>AAAAA</li>
<li>AAAAA</li>
<li>AAAAA</li>
<li>AAAAA</li>
<li>AAAAA</li>
</ol>
</div>
</body>
</html>
stylesheet.css
.parent{
background-color: yellow;
height:200px;
width:400px;
}
.change{
border: 1px dotted green;
background-color: red;
height:15px;
width:100px;
}
【问题讨论】:
-
这是预期行为,不确定您的预期。如果您希望在触发间隔回调后调用这段代码,则将其设置在间隔回调中。或者使用命名函数并在第一个间隔回调被触发之前调用它
-
如果你想删除最后一个项目类 - 将计数器增加到 11?但是,对于所需的行为,也许有更简单的解决方案......
标签: javascript jquery html settimeout