如何定期重复键入JavaScript函数

如何定期重复键入JavaScript函数,javascript,function,settimeout,setinterval,Javascript,Function,Settimeout,Setinterval,我设计了一个程序,将字符串键入div <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <script> var i, speed, thraot, disp; i = 0; speed = 90;

我设计了一个程序,将字符串键入
div

<!DOCTYPE html>
<html>

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body>

  <script>
    var i, speed, thraot, disp;
    i = 0;
    speed = 90;
    thraot = "Jesus is Lord, Forever..."
    disp = document.createElement("DIV");
    disp.setAttribute('id', 'mytxt');
    document.body.appendChild(disp);
    disp.innerHTML = "";

    function myTyping() {
      if (i < thraot.length) {
        disp.innerHTML += thraot.charAt(i);
        i++;
      }
      dd = setTimeout(myTyping, speed);
    }

    setInterval(function() {
      myTyping();
    }, speed * thraot.length);
  </script>
</body>

</html>

变量i,速度,色罗,显示;
i=0;
速度=90;
thraot=“耶稣是主,永远……”
disp=document.createElement(“DIV”);
disp.setAttribute('id','mytxt');
文件.正文.附件(disp);
disp.innerHTML=“”;
函数myTyping(){
if(i
我知道
setInterval
在定义的毫秒内重复调用函数,但在这里不起作用


请大家帮我一次又一次地让它工作。

您可以在else块中重置
I
和您的
div
内容

var i,速度,色拉,显示;
i=0;
速度=90;
thraot=“耶稣是主,永远……”
disp=document.createElement(“DIV”);
disp.setAttribute('id','mytxt');
文件.正文.附件(disp);
disp.innerHTML=“”;
函数myTyping(){
if(i},速度*thraot.长度)
在调用
myTyping
内部
setInterval
之前,您缺少
i=0

如果你想清除当前文本,也可以重置
disp.innerHTML=“

我要说的是非常感谢@user0103,他把我的代码从优秀变成了优秀

如何反复刷新打字效果函数

<!DOCTYPE html> 
<html> 

<head> 
 <meta name="viewport" content="width=device-width, initial-scale=1"> 
</head> 

<body> 

 <script>
var i, speed, thraot, disp;
i = 0;
speed = 90;
thraot = "Jesus is Lord, Forever..."
disp = document.createElement("DIV");
disp.setAttribute('id', 'mytxt');
document.body.appendChild(disp);
disp.innerHTML = "";

const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));

(async function() {
    while(true) {
    for(let i = 0; i < thraot.length; ++i) {
        disp.innerHTML += thraot.charAt(i);
        await sleep(speed);
    }
    await sleep(speed);

    disp.innerHTML = "";
  }
})();

</script>
</body> 

</html>

变量i,速度,色罗,显示;
i=0;
速度=90;
thraot=“耶稣是主,永远……”
disp=document.createElement(“DIV”);
disp.setAttribute('id','mytxt');
文件.正文.附件(disp);
disp.innerHTML=“”;
const sleep=ms=>newpromise(resolve=>setTimeout(resolve,ms));
(异步函数(){
while(true){
for(设i=0;i

这工作得很好…

重复,在完成整个字符串后再次从J开始??我尝试添加一个setInterval,以使其在字符串中反复工作。@user0103非常感谢。。。我不知道如何很好地等待睡眠。这个例子每次都会运行得更快。是的。目前还不清楚这是否是需要的。如果没有,请删除间隔并调用
myTypings()
。噢,谢谢,伙计,我接受了你的逻辑。它对我有效,但速度越来越快…参见第二个示例。第二个示例将thraot.length和Speed相乘,并将其用于我的setTimeout()函数。所以请不要接受。