我试图让jQuery片段循环并继续显示数组中的消息。这是我到目前为止的工作,即使我使用了setTimeout函数,它也不会在一次之后循环。
我做错了什么?什么是最佳实践?为什么?
提前致谢
var obj = $("div");
var arr = $.makeArray(obj);
var len = arr.length;
var i = 0;
function printloop() {
arr[i].style.display = "block";
i++;
if (i < len) {
setTimeout(printloop, 2000);
} else {
setTimeout(function() {
$("div").css("display", "none");
},1000);
};
}
printloop();
setInterval(prinloop, 20000);
答案 0 :(得分:0)
如果我理解正确,在你通过所有div之后,你想再次隐藏它们并重新开始这个过程。
如果是这样,试试这个:
// ...
setTimeout(function() {
$("div").css("display", "none");
i = 0; // start back at the first div
printloop();
}, 1000);
请注意,setInterval
来电printloop
prinloop
(var arr = $.makeArray($('div'));
var i = 0;
function printloop() {
arr[i].style.display = "block";
i++;
if (i < arr.length) {
setTimeout(printloop, 2000);
} else {
setTimeout(function() {
$("div").css("display", "none");
i = 0;
printloop();
}, 1000);
}
}
printloop();
},但我认为你根本不想要那条线路。我建议删除它。
完整的工作示例:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="display:none">Div 1</div>
<div style="display:none">Div 2</div>
<div style="display:none">Div 3</div>
&#13;
public void setProperty(int var) {
if(var > 0){
propertySupport.firePropertyChange("var", this.var,var);
this.var = var;
}else{
System.out.println("bla bla");
}
}
//methods
public void addPropertyChangeListener(PropertyChangeListener listener) {
propertySupport.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertySupport.removePropertyChangeListener(listener);
}
&#13;
答案 1 :(得分:0)
您只需要setInterval()
阅读文档:
使用此,我希望能帮到你。
var obj = $("div");
var arr = $.makeArray(obj);
var len = arr.length;
var i = 0;
function printloop() {
if (i >= len) {
i = 0
$("div").css("display", "none");
};
arr[i].style.display = "block";
i++;
}
printloop();
setInterval(printloop, 2000); // setInterval(prinloop, 20000); not work because prinloop is undefined
&#13;
div{ display: none;}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
H
</div>
<div>
E
</div>
<div>
L
</div>
<div>
L
</div>
<div>
O
</div>
&#13;