2011-10-07 39 views
2

我正在使用jQuery脚本,显示页面加载时从数组的随机标语。 但是我希望这个口号每6秒更换一次。我怎样才能做到这一点?修改简单的jQuery脚本以随机化文本与计时器

This is a working fiddle这里是代码:

$(document).ready(function() { 
    phrases = [ 
     "a creative Chicago design shop", 
     "design is simple", 
     "we build fine, fine things", 
     "we love creating" 
    ]; 

    var phrase = phrases[Math.floor(Math.random()*phrases.length)] 
    $('#site').text(phrase); 
}); 

回答

1

Fiddle!

$(document).ready(function() { 
    changePhrase(); 
    var rotate = setInterval(changePhrase, 6000); 
}); 

function changePhrase() { 
    phrases = [ 
     "a creative Chicago design shop", 
     "design is simple", 
     "we build fine, fine things", 
     "we love creating" 
    ]; 

    currentPhrase = $('#site').text(); 
    if (phrases.indexOf(currentPhrase)) phrases.splice(phrases.indexOf(currentPhrase), 1); // remove current phrase from array to prevent repetitions 

    var phrase = phrases[Math.floor(Math.random()*phrases.length)] 
    $('#site').text(phrase); 
} 

更新:在两班轮时抛出,防止同一短语的重复一排好两次在测量。

+0

太棒了!谢谢。 – EnexoOnoma

+0

工作在jsFiddle。 – Kzqai

0

这将改变短语无限的时间,但你必须使用JQuery的计时器插件。

$(document).everyTime(1000, function(i) { 
    var phrase = phrases[Math.floor(Math.random()*phrases.length)] 
$('#site').text(phrase); 
}, 0); 
+0

对于基本归结为'setInterval()'的任务使用额外的插件是过度的,imo。 – vzwick

+0

这个插件是有用的,它可以节省你管理id的麻烦,当你想停止间隔集合的循环时,如果每一次()中的第三个参数都设置为0,它也可以设置为一个定义的重复时间。 > 0。 除了我认为根据问题的标题,他问的方式在JQuery中。 – Genjuro

+0

我应该说“在这种情况下**是过度**”。并不意味冒犯你。 – vzwick