javascript - 以设定的时间增量循环对象

标签 javascript for-loop settimeout

我一直在寻找这个问题的答案,但我发现的修复没有帮助,所以我想我会直接指出我哪里出了问题(一如既往 - 非常感谢这里的任何帮助)

所以我有一个包含评论的对象数组,我需要它每 10 秒在网站上发布一条新评论,即更新文本等:

我想我会使用:

review = [{
name: 'X',
rating: 'X',
review: 'X'
},

{
name: 'X',
rating: 'X',
review: 'X'
}]

然后使用 setTimeout 函数和 for 循环更新网站的 html(显然这不像我想象的那么容易)-

function init(){

    var name = document.querySelector('.name');

    for(i=0; i<reviews.length; i++){
        setTimeout(function(){
            name.innerHTML = reviews[i].aditional_info_name;
        },10000)
    }

}

这里的任何输入都会很有帮助 - 我看过一些关于这个主题的其他帖子,但我还没有设法根据目前所见实现修复。

问题-

我不断得到:

enter image description here

提前致谢, W

最佳答案

let reviews = [{
    name: 'X',
    rating: 'X',
    review: 'OX'
  },

  {
    name: 'X',
    rating: 'X',
    review: 'XL'
  },

  {
    name: 'X',
    rating: 'X',
    review: 'XD'
  },

  {
    name: 'X',
    rating: 'X',
    review: 'XJ'
  },

  {
    name: 'X',
    rating: 'X',
    review: 'HX'
  },

  {
    name: 'X',
    rating: 'X',
    review: 'XG'
  }
]


function init() {

  var name = document.querySelector('.name');

  for (var i = 0; i < reviews.length; i++) {
    (function(index) {
      setTimeout(function() {
        name.innerHTML = reviews[index].review;
      }, index * 1000)
    })(i);
  }

}

init();
<div class="name">

</div>

您应该使用 let 或使用 closure。因为在您设置的超时执行时,循环的最后一个变量还剩下。还要检查其变量名你提到的评论不是评论

function init(){

    var name = document.querySelector('.name');

    for(let i=0; i<reviews.length; i++){
        setTimeout(function(){
            name.innerHTML = reviews[i].aditional_info_name;
        },i*10000)
    }

}

function init(){

        var name = document.querySelector('.name');

        for(var i=0; i<reviews.length; i++){
           (function(index) {
            setTimeout(function(){
                name.innerHTML = reviews[index].aditional_info_name;
            },index*10000)
            })(i);
        }

    }

另见 this

关于javascript - 以设定的时间增量循环对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59119549/

相关文章:

javascript - 使用 .prop() 方法获取标签名称会引发错误,即浏览器

字符串问题的javascript分配

javascript - 如何从内部获取 Mootools 类的名称

jquery延迟和setTimeout

javascript - 使用 Javascript 在服务器中打开数据库

ios - iOS:使用在后台运行的方法进行循环?

使用 == 运算符时 R 在 NA 时返回 FALSE

c - 结构数组测试时循环未触发

javascript - For 循环中的 setTimeout 不起作用

javascript - typescript /ReactJS/setTimeout : 'this' implicitly has type 'any' because it does not have a type annotation. ts