我想使用jQuery获取这些电子邮件的循环结果,这是我的代码:

时间:2016-12-18 14:40:01

标签: jquery loops

var Email=["name@google.com","name@yahoo.com","name@gmail.com"];

function winner(){
    for(var i=0;i<Email.length;i++){
        Email[i]+=i;    
        $("#winner").text(Email[i]).fadeIn(2000).fadeOut(3000).delay();    
    }
}
setInterval(winner,1000);

2 个答案:

答案 0 :(得分:1)

这有几个问题:

1)Email[i]+=i;i的值附加到电子邮件地址,因此它会输出大量整数

2)在每次执行该函数时,您都会遍历所有电子邮件,但是由于淡入淡出时间与间隔时间的关系,您看不到所有这些都发生了 - 每个淡入淡出的函数重新运行5次进/出顺序。

这样的事情会更好:

var Email=["name@google.com","name@yahoo.com","name@gmail.com"];
var i = 0; //set a counter

function winner() {
  $("#winner").text(Email[i]).fadeIn(2000).fadeOut(3000);
  i++; //increment the counter
  if (i >= Email.length) { i = 0; } //reset the counter
}

winner(); //initial display at load
setInterval(winner,5000); //run every 5 seconds subsequently, to match the fade timing

看到它在这个小提琴中工作:https://jsfiddle.net/5f0o4zxx/3/

答案 1 :(得分:0)

var Email=["name@google.com","name@yahoo.com","name@gmail.com"];
i=0; //init
$("#winner").text(Email[0]).fadeIn(2000).fadeOut(3000).delay(1000); //init
setInterval(function(){ 
i++;  
$("#winner").text(Email[i]).fadeIn(2000).fadeOut(3000).delay(1000);
if(i==Email.length-1) { //if you want loop
i=-1; //reset counter
}
}, 
6000); //every 6 seconds
  

没有多大意义。此外,你的setInterval每秒调用一次函数,但你有fadeIn / fadeOut一起 - 5秒,所以这也不会正常工作。

你可以这样做:

#winner {
  display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="winner">

</div>
System.out.print("\nIs " + target + " in the array? ");

代码已注释,因此您可以看到正在发生的事情。