我想为 streamlabs 警报做这样的事情(当你有一个新的订阅者和东西时): https ://codepen.io/alticreation/pen/ZYdopE
起初它所做的是从 DOM 中抓取一个元素并将字符串更改为随机字符串。这使它很好。然后,半秒后,它将随机字符串更改为最终字符串,我希望该过程与示例中一样。在控制台中,还可以看到该过程很好地遵循了它,但它是一次性完成的。
我也尝试过使用 setInterval,但我也无法让它工作。
window.onload
var domElement = document.getElementById("alert-message");
var texto = domElement.innerHTML;
var falso = ""
var longitud = String(texto).length;
var caracteres = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabccdefghijklmnñopqrstuwxyz0123456789-+*/|}{[]~\\\":;?/.><=+-_)(*&^%$#@!)}";
for(var i = 0; i < longitud; i++){
falso += caracteres.charAt(Math.floor(Math.random() * 101));
}
falso = String(falso);
domElement.innerHTML = falso
function cambiar(){
for(i = 0; i < longitud + 1; i++){
domElement.innerHTML = falso
setDelay(i);
}
};
cambiar();
function setDelay(i) {
setTimeout(function(){
falso = texto.substr(0,i) + falso.substr(i);
console.log(falso);
domElement.innerHTML = falso
}, 2000);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id= "alert-message">Pepe nos está siguiendo</div>
<script src="src/prueba.js"></script>
</body>
</html>
当返回函数是匿名的或者你包含括号时,它会立即执行,无需等待。
我不知道如何使用匿名函数,但这是一个解决方案:您必须创建一个要执行的函数并将其作为第一个参数包含在内,不带括号,对于这种情况,使用 change 函数和递归就足够了调用直到链完成。