我正在尝试让这个脚本运行,而不是以Awesome这个词结束。然后再循环/重复。
这是JS
var i, word, rnd, words, fadeSpeed, timer;
words = ['respected.', 'essential.', 'tactical.', 'effortless.', 'credible.', 'smart.', 'engaging.', 'focused.', 'effective.', 'clear.', 'relevant.', 'strategic.', 'trusted.', 'compelling.', 'admired.', 'inspiring.', 'cogent.', 'impactful.', 'valued.'];
fadeSpeed = 500;
timer = 2000;
for (i = 0; i < 20; i++) {
if (i === 19) {
word = 'awesome.';
rnd = Math.floor(Math.random() * words.length);
word = words[rnd];
words.splice(rnd, 1);
} else {
rnd = Math.floor(Math.random() * words.length);
word = words[rnd];
words.splice(rnd, 1);
}
(function(word) {
$('h1.random em').fadeOut(fadeSpeed, function() {
$(this).html(word);
})
.slideDown('slow')
.delay(timer)
.fadeIn(fadeSpeed);
})(word);
}
这是开发站点的链接。
答案 0 :(得分:0)
在
中if(i===19)
情况,您正在设置
word= 'awesome.';
然后在不使用它的情况下立即书写:
word= words[rnd];
删除最后一行(及其上方的rnd =行,然后将变为多余的)。
答案 1 :(得分:0)
为了让这个连续循环,看到你每次从数组中删除(可能是因为你不会在每个序列中得到重复),你需要做一些事情
while(true)
)代替固定循环(for(;;)
)awesome.
这是实现这一目标的一种方法 - 我只有C / P阵列,但有一种更聪明的方法可以做到这一点 - 我会留给你想象。
var i, word, rnd, words, fadeSpeed, timer;
words = ['respected.', 'essential.', 'tactical.', 'effortless.', 'credible.', 'smart.', 'engaging.', 'focused.', 'effective.', 'clear.', 'relevant.', 'strategic.', 'trusted.', 'compelling.', 'admired.', 'inspiring.', 'cogent.', 'impactful.', 'valued.'];
fadeSpeed = 500;
timer = 2000;
while(true){
var word;
if(words.length == 0){
word = "awesome.";
words = ['respected.', 'essential.', 'tactical.', 'effortless.', 'credible.', 'smart.', 'engaging.', 'focused.', 'effective.', 'clear.', 'relevant.', 'strategic.', 'trusted.', 'compelling.', 'admired.', 'inspiring.', 'cogent.', 'impactful.', 'valued.'];
}
else{
rnd = Math.floor(Math.random() * words.length);
word = words[rnd];
words.splice(rnd, 1);
}
(function(word) {
$('h1.random em').fadeOut(fadeSpeed, function() {
$(this).html(word);
})
.slideDown('slow')
.delay(timer)
.fadeIn(fadeSpeed);
})(word);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1 class="random"><em></em></h1>
&#13;
答案 2 :(得分:0)
Splice将从您的数组中删除单词。
words.splice(rnd, 1);
在第20个元素之后,没有什么可以迭代的。
正如@Jamiec所说,你需要一个连续循环。你也可以使用setTimeout();连续循环(应该减少CPU重量而不是while(true))
尝试这样的事情(@ jamiec答案的略微修改版本)
var i, word, rnd, words, fadeSpeed, timer;
function getWords(){
var words = ['respected.', 'essential.', 'tactical.', 'effortless.', 'credible.', 'smart.', 'engaging.', 'focused.', 'effective.', 'clear.', 'relevant.', 'strategic.', 'trusted.', 'compelling.', 'admired.', 'inspiring.', 'cogent.', 'impactful.', 'valued.'];
return words;
}
words = getWords();
fadeSpeed = 500;
timer = 2000;
displayWords();
function displayWords(){
var word;
if(words.length == 0){
word = "awesome.";
words = getWords();
}
else{
rnd = Math.floor(Math.random() * words.length);
word = words[rnd];
words.splice(rnd, 1);
}
(function(word) {
$('h1.random em').fadeOut(fadeSpeed, function() {
$(this).html(word);
})
.slideDown('slow')
.delay(timer)
.fadeIn(fadeSpeed);
})(word);
setTimeout(displayWords,1000);
}