我发誓我正在寻找解决这个问题的方法,在我问这里之前的几个小时,我发现了一些代码,但仍然没有任何东西适合我需要的......事情就是我有一些盒子和一个按钮滚动随机样式...当我单击按钮时,以下代码开始;
l = "ACGT"
from itertools import product
print([''.join(s) for s in product(l, repeat=2)])
# ['AA', 'AC', 'AG', 'AT', 'CA', 'CC', 'CG', 'CT', 'GA', 'GC', 'GG', 'GT', 'TA', 'TC', 'TG', 'TT']
它在1到10之间随机选择,并将样式类更改为该框...所以...在循环之后的行中,我假装将原始阶梯放回原位,因此它给出了随机选择的外观。但它没有执行,如果我把它放在for循环中它执行inmediatly并且似乎没有发生任何事情...即时通讯Javascript noob我正在尝试这个学习和练习!...提前感谢您的帮助! ...
答案 0 :(得分:1)
您可以创建一个随机设置所选类的setInterval,并使用setTimeout结束所述间隔的执行,如下所示:https://jsfiddle.net/canastro/xxdbjm4n/1/
const refreshIntervalId = setInterval(() => {
$('.selected').removeClass('selected');
const res = Math.floor(Math.random() * 10) + 1;
$(`.slot-${res}`).addClass('selected');
}, 500)
setTimeout(() => {
clearInterval(refreshIntervalId);
}, 3000);
答案 1 :(得分:0)
你可以使用setTimeout(function(){dosomething},timeout),顺便说一句。添加console.log('something')以查看函数是否实际执行。
顺便说一句。如果你正在使用间隔记住你可能需要取消它,如果你不希望它运行forver,你也可以使用重复功能(一个函数调用自身),在某些条件下何时进行处理或现在。
btw2。每次创建间隔时都会将其分配给某个变量或其他东西,以便取消它!
答案 2 :(得分:0)
你的答案应该是这样的。你需要看到javascript变量范围。
function roll(){
for (i = 0; i < 4; i++) {
var res = Math.floor(Math.random() * 10) + 1;
function active(res){
setTimeout(function(){
document.getElementById("slot-" + res).className = "col-sm-2 slot-active";
}, 500);
document.getElementById("slot-" + res).className = "col-sm-2 slot";
}
active(res);
}
};
div{
width:50px;
height:50px;
background:#ccc;
float:left;
margin:5px;
}
.slot{
background:#0f0;
}
.slot-active{
background:#f00;
}
<button onclick="roll()" style="display:block;">roll</button>
<div id="slot-1"></div>
<div id="slot-2"></div>
<div id="slot-3"></div>
<div id="slot-4"></div>
<div id="slot-5"></div>
<div id="slot-6"></div>
<div id="slot-7"></div>
<div id="slot-8"></div>
<div id="slot-9"></div>
<div id="slot-10"></div>