我的网站顶部有一个名为“通知”的div。 我想循环遍历一个文本数组,并在每30秒内在该div内一个接一个地显示每个值。
我写的下面的代码不起作用,我已经多次尝试弄明白但没有任何效果。
var my_array = ["first text", "second text", "third text"];
jQuery.each(my_array, function(index, value) {
jQuery('.notifications').replaceWith(value).delay(500);
});
答案 0 :(得分:2)
delay()
方法用于在动画队列中提供延迟,因此您无法使用replaceWith()
方法。其次,replaceWith()
将使用DOM树中的新元素替换整个元素,因此在第二次迭代中jQuery('.notifications')
将不会选择任何内容,因为元素已被替换。
要使其工作,请使用setInterval
方法,而不是替换整个元素,只需使用text()
方法更新元素的内容。
var my_array = ["first text", "second text", "third text"];
// variable for counting
var i = 0;
// initialize interval and cache the return id
// to clear the interval later
var inter = setInterval(change, 500);
// call the function to execute initially
change();
function change() {
// update the content
jQuery('.notifications').text(my_array[i++]);
// check count reache the length of array
if (i == my_array.length)
// if reached length of array then clear the interval
clearInterval(inter);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="notifications"></span>
&#13;