Javascript 具有setInterval的循环数组不工作

Javascript 具有setInterval的循环数组不工作,javascript,arrays,loops,setinterval,Javascript,Arrays,Loops,Setinterval,问题是,现在,循环只显示数组的最后一个值,即“o” const h2=document.querySelector'h2'; const title=document.querySelector'h1'; 常量词=['h','e','l','l','o']; 函数环{ forlet i=0;i{ 控制台.日志字[i]; title.textContent=单词[i]; }, 1000 } } 环 这是因为你在循环中做间隔,这意味着当你到达1s时,i已经在数组i=4的末尾了 我想这就是你想要的

问题是,现在,循环只显示数组的最后一个值,即“o”

const h2=document.querySelector'h2'; const title=document.querySelector'h1'; 常量词=['h','e','l','l','o']; 函数环{ forlet i=0;i{ 控制台.日志字[i]; title.textContent=单词[i]; }, 1000 } } 环
这是因为你在循环中做间隔,这意味着当你到达1s时,i已经在数组i=4的末尾了

我想这就是你想要的

let i = 0;
let interval;

const loop = () => {
  console.log(word[i]);
  if (word[i]) title.textContent += word[i];
  else clearInterval(interval)
  i ++;
}

interval = window.setInterval(loop, 1000);

希望这有帮助这是因为你在循环中做间隔,这意味着当你到达1时,i已经在数组i=4的末尾了

我想这就是你想要的

let i = 0;
let interval;

const loop = () => {
  console.log(word[i]);
  if (word[i]) title.textContent += word[i];
  else clearInterval(interval)
  i ++;
}

interval = window.setInterval(loop, 1000);

希望这对您有所帮助

如果您想在1秒后更改数组中所有单词的标题,您可以从索引0开始,继续使用setInterval,直到您的索引小于word.length

比如:

const h2 = document.querySelector('h2');
const title = document.querySelector('h1');

const word = ['h', 'e', 'l', 'l', 'o'];

loop(0);

function loop(index) {
  setTimeout(() => {
    if (index < word.length) {
      title.textContent = word[index];
      setTimeout(() => loop(index+ 1), 1000);
    } else {
    setTimeout(() => loop(0), 1000);
    }
  }, 1000)
}
这里我设置第一个元素,并为下一个元素设置超时


如果索引超过了字长,我也会用else重置单词循环。

如果你想在1秒后更改数组中所有单词的标题,你可以从索引0开始,并保持setInterval直到你的索引小于word.length

比如:

const h2 = document.querySelector('h2');
const title = document.querySelector('h1');

const word = ['h', 'e', 'l', 'l', 'o'];

loop(0);

function loop(index) {
  setTimeout(() => {
    if (index < word.length) {
      title.textContent = word[index];
      setTimeout(() => loop(index+ 1), 1000);
    } else {
    setTimeout(() => loop(0), 1000);
    }
  }, 1000)
}
这里我设置第一个元素,并为下一个元素设置超时


如果索引超过了单词长度,我也会用else来重置单词循环。

以下是我的理解。这个程序应该每隔一秒钟附加hello

这个代码对我有用

html

js

演示:


这是我的理解。这个程序应该每隔一秒钟附加hello

这个代码对我有用

html

js

演示:


对于一小部分时间间隔,我建议改用setTimeout,并为它们指定适当的超时时间,并在想要添加到元素innerHTML的字符上加上闭包

函数循环字、目标{ 对于let i=0;i=>target.innerHTML+=cword[i],i+1*1000; } } 循环'hello',document.querySelector'h1';
对于一小部分时间间隔,我建议改用setTimeout,并为它们指定适当的超时时间,并在想要添加到元素innerHTML的字符上加上闭包

函数循环字、目标{ 对于let i=0;i=>target.innerHTML+=cword[i],i+1*1000; } } 循环'hello',document.querySelector'h1';
你应该读一读javascript中的闭包,我想他是想每秒钟改变一次标题,在这个数组中循环。这是我的工作。。title.textContent+=单词[i];演示:你应该读一下javascript中的闭包。我想他是想每秒钟更改一次标题,在这个数组中循环。这是我的工作。。title.textContent+=单词[i];演示: