Javascript 对数组上的连续循环有问题

Javascript 对数组上的连续循环有问题,javascript,jquery,Javascript,Jquery,请看一下这个演示,让我知道为什么循环会在第三个元素停止,而不能再次取回第一个项目 var-appTxt=$('.smart-txt').hide(), 新闻=['news 1'、'news 2'、'news 3'], 计数=0; 函数changeNews(){ fadeIn(2000).delay(3000).fadeOut(2000,函数(){ changeNews(); }).text(新闻[count++]); } changeNews() 所做的更改 if(count == news.

请看一下这个演示,让我知道为什么循环会在第三个元素停止,而不能再次取回第一个项目

var-appTxt=$('.smart-txt').hide(),
新闻=['news 1'、'news 2'、'news 3'],
计数=0;
函数changeNews(){
fadeIn(2000).delay(3000).fadeOut(2000,函数(){
changeNews();
}).text(新闻[count++]);
}
changeNews()

所做的更改

if(count == news.length ){
  count = 0;
}
添加上述条件只是为了在count变量到达最后一个元素时初始化它

工作演示

var-appTxt=$('.smart-txt').hide(),
新闻=['news 1'、'news 2'、'news 3'],
计数=0;
函数changeNews(){
fadeIn(2000).delay(3000).fadeOut(2000,函数(){
changeNews();
}).text(新闻[count++]);
if(count==news.length){
计数=0
}
}
changeNews()

尝试像下面这样重写您的逻辑

function changeNews() {
    appTxt.fadeIn(2000).delay(3000).fadeOut(2000, function() {
        changeNews();
    }).text(news[count++ % news.length]);
}
计数
大于
数组的长度
长度时,它将返回
未定义
。因此
.text(未定义)
将充当
获取者
而不是
设置者
。这就是为什么你一次又一次地看到最后的文本


与其每次都计算,不如存储长度
var intNewsLength=news.length如何?请您解释一下:)