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>
- 1 回答
- 0 关注
- 83 浏览
添加回答
举报