尝试随机化数组中的单词并在 5 后停止循环
Trying to randomize words from an array and stop the loop after 5
我正在尝试编写一个脚本,该脚本将从一个名为words的数组中随机选择一个单词,并在5次后停止循环并将html替换为Amazing。 所以它总是以惊人的结束。无法找出这样的事情的最佳实践。我的想法是,只是不知道将脚本终结器放在哪里或如何正确实现这一点。
我觉得我需要在我的脚本中实现这样的东西,但不知道在哪里。请帮忙。
if(myLoop > 15) {
console.log(myLoop);
$("h1").html('AMAZING.');
}
else {
}
这是我用来循环和创建新单词的 Javascript。
$(document).ready(function(){
words = ['respected', 'essential', 'tactical', 'effortless', 'credible', 'smart', 'lucid', 'engaging', 'focussed', 'effective', 'clear', 'relevant', 'strategic', 'trusted', 'compelling', 'admired', 'inspiring', 'cogent', 'impactful', 'valued']
var timer = 2000,
fadeSpeed = 500;
var count = words.length;
var position, x, myLoop;
$("h1").html(words[rand(count)]);
function rand(count) {
x = position;
position = Math.floor(Math.random() * count);
if (position != x) {
return position;
} else {
rand(count);
}
}
function newWord() {
//clearTimeout(myLoop); //clear timer
// get new random number
position = rand(count);
// change tagline
$("h1").fadeOut(fadeSpeed, function() {
$("h1").slideDown('slow'); $(this).html(words[position]).fadeIn(fadeSpeed);
});
myLoop = setTimeout(function() {newWord()}, timer);
}
myLoop = setTimeout(function() {newWord()}, timer);
});
这是我的代码笔
http://codepen.io/alcoven/pen/bNwewb
这是一个解决方案,它使用for
循环和闭包。
使用拼接从数组中删除单词。 这可以防止重复。
我正在使用jQuery延迟代替setTimeout
:
var i, word, rnd, words, fadeSpeed, timer;
words = ['respected', 'essential', 'tactical', 'effortless', 'credible', 'smart', 'lucid', 'engaging', 'focused', 'effective', 'clear', 'relevant', 'strategic', 'trusted', 'compelling', 'admired', 'inspiring', 'cogent', 'impactful', 'valued'];
fadeSpeed = 500;
timer = 2000;
for(i = 0 ; i < 6 ; i ++) {
if(i===5) {
word= 'awesome';
}
else {
rnd= Math.floor(Math.random() * words.length);
word= words[rnd];
words.splice(rnd, 1);
}
(function(word) {
$('h1').fadeOut(fadeSpeed, function() {
$(this).html(word);
})
.slideDown('slow')
.delay(timer)
.fadeIn(fadeSpeed);
}
)(word);
}
h1 {
text-transform: uppercase;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1></h1>
我添加了一个迭代计数器来检查它更改了多少次。
通过其他变量添加此内容:
var iter = 1;
在newWord
函数中添加了以下内容:
iter = iter + 1;
if (iter > 5) {
return;
}
var word;
if (iter == 5) {
word = 'awesome';
}
else {
...
这是我通过更改代码的解决方案:
http://codepen.io/anon/pen/YPGWYd
相关文章:
- jQuery:循环一个具有不同超时值的循环
- 在循环中分配json值时,值被覆盖
- 如何在下面的ES6循环中获得前面的文本
- 为什么“;未定义的“;在JavaScript中结束循环
- Javascript循环不会自我更新
- 如何使用jquery处理php循环通过元素
- 而循环只设置php中输入字段中的第一个值
- 循环遍历数组中的特定索引
- 识别两个文本中的单词(if 语句在 for 循环中)
- 可以'我的单词随机化器脚本不能正常循环
- 如何在 JavaScript 中跳过循环中的单词
- 尝试随机化数组中的单词并在 5 后停止循环
- 如何创建一个计数器循环,该循环在单击提交按钮时启动,并输出多行单词,每个单词前面都有一个数字
- 在 javascript 中使用嵌套的 for 循环返回单词字符串中重复最多的字母
- 如何在JavaScript中从列表中检查单词的相似性(而无需循环浏览整个词典)
- 在脚本内部循环一个单词并对其进行更改
- 在循环中重复单词
- 如何计算for循环中的单词长度
- 动画文本,循环通过数组的单词和颜色
- javascript中8个单词后出现超长循环