第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在運行時更改SetInterval的間隔

在運行時更改SetInterval的間隔

慕田峪4524236 2019-07-10 14:52:59
在運行時更改SetInterval的間隔我編寫了一個javascript函數(shù),它使用setInterval在一定次數(shù)的迭代中每十秒操作一個字符串。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);};與其將間隔設(shè)置為特定的數(shù)字,我想在每次運行時,根據(jù)計數(shù)器更新它。因此,與其:var interval = setInterval(function() { ... }, 100);應(yīng)該是這樣的:var interval = setInterval(function() { ... }, 10*counter);不幸的是,這是行不通的。好像“10*計數(shù)器”等于0。那么,如何在每次運行匿名函數(shù)時調(diào)整間隔?
查看完整描述

3 回答

?
一只萌萌小番薯

TA貢獻1795條經(jīng)驗 獲得超7個贊

使用setTimeout()相反。然后回調(diào)將負責(zé)觸發(fā)下一個超時,此時您可以增加或以其他方式操作時間。

編輯

這里有一個通用函數(shù),您可以使用它為任何函數(shù)調(diào)用應(yīng)用“減速”超時。

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);


查看完整回答
反對 回復(fù) 2019-07-10
?
千萬里不及你

TA貢獻1784條經(jīng)驗 獲得超9個贊

您可以使用匿名函數(shù):

var counter = 10;var myFunction = function(){
    clearInterval(interval);
    counter *= 10;
    interval = setInterval(myFunction, counter);}var interval = setInterval(myFunction, counter);

更新:按A.Wolff的建議,使用setTimeout為了避免需要clearInterval.

var counter = 10;var myFunction = function() {
    counter *= 10;
    setTimeout(myFunction, counter);}setTimeout(myFunction, counter);


查看完整回答
反對 回復(fù) 2019-07-10
  • 3 回答
  • 0 關(guān)注
  • 833 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號