亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

為什么setInterval只執行一次?

為什么setInterval只執行一次?

富國滬深 2023-09-25 17:20:40
setInterval只執行一次。我還嘗試使用setTimeout并將其放置在函數內以引起循環,但這給出了相同的結果。我正在使用括號,如果這有影響的話,它是實時預覽。const buttons = document.getElementsByTagName('button');setInterval(charChange, 1000);function charChange(){    let string;    let chars = ['#', '!', '@', '$', '%', '&', '+', '?'];    for(i = 0; i < buttons.length; i++){        string = buttons[i].textContent;        let char = chars[Math.floor(Math.random() * 7)];        string = string.replace(/_/, char);        buttons[i].textContent = string;    }}<button id = 'title'>help_</button>
查看完整描述

1 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

您的函數運行正確,問題出在函數代碼本身,而不是在setInterval.


這樣做:


string = string.replace(/_/, char);

你總是試圖更換_角色。從第二次調用函數時起,該字符將不再存在,因為它被第一次調用所替換。


如果您希望最后一個字符不斷變化,您有多種選擇:


string = string.substrstring.replace(/.$/, char);

// or

string = string.substrstring.slice(0, -1) + char;

// or even just

buttons[i].textContent = 'help' + char;

正則表達式.$匹配字符串中最后一個位置的任何字符($匹配字符串的末尾),但它可能是最慢的選項。


工作片段:

const buttons = document.getElementsByTagName('button');


setInterval(charChange, 1000);


function charChange(){

    let string;

    let chars = ['#', '!', '@', '$', '%', '&', '+', '?'];

    for(i = 0; i < buttons.length; i++){

        let char = chars[Math.floor(Math.random() * 7)];

        buttons[i].textContent = 'help' + char;

    }

}

<button id = 'title'>help_</button>


查看完整回答
反對 回復 2023-09-25
  • 1 回答
  • 0 關注
  • 116 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號