在运行时更改SetInterval的间隔我编写了一个javascript函数,它使用setInterval在一定次数的迭代中每十秒操作一个字符串。function timer() {
var section = document.getElementById('txt').value;
var len = section.length;
var rands = new Array();
for (i=0; i<len; i++) {
rands.push(Math.floor(Math.random()*len));
};
var counter = 0
var interval = setInterval(function() {
var letters = section.split('');
for (j=0; j < len; j++) {
if (counter < rands[j]) {
letters[j] = Math.floor(Math.random()*9);
};
};
document.getElementById('txt').value = letters.join('');
counter++
if (counter > rands.max()) {
clearInterval(interval);
}
}, 100);};与其将间隔设置为特定的数字,我想在每次运行时,根据计数器更新它。因此,与其:var interval = setInterval(function() { ... }, 100);应该是这样的:var interval = setInterval(function() { ... }, 10*counter);不幸的是,这是行不通的。好像“10*计数器”等于0。那么,如何在每次运行匿名函数时调整间隔?
3 回答
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
setTimeout()
编辑
function setDeceleratingTimeout(callback, factor, times){
var internalCallback = function(tick, counter) {
return function() {
if (--tick >= 0) {
window.setTimeout(internalCallback, ++counter * factor);
callback();
}
}
}(times, 0);
window.setTimeout(internalCallback, factor);};// console.log() requires firebug
setDeceleratingTimeout(function(){ console.log('hi'); }, 10, 10);setDeceleratingTimeout(function(){ console.log('bye'); }, 100, 10);
千万里不及你
TA贡献1784条经验 获得超9个赞
var counter = 10;var myFunction = function(){
clearInterval(interval);
counter *= 10;
interval = setInterval(myFunction, counter);}var interval = setInterval(myFunction, counter);setTimeoutclearInterval.
var counter = 10;var myFunction = function() {
counter *= 10;
setTimeout(myFunction, counter);}setTimeout(myFunction, counter);添加回答
举报
0/150
提交
取消
