以设定的时间增量循环对象
Loop over an object at set increments of time
我一直在寻找这个问题的答案,但我发现的修复没有帮助,所以我想我会直接指出我哪里出了问题(一如既往 - 非常感谢这里的任何帮助)
所以我有一组对象,带有评论,我需要它每 10 秒在网站上 post 一个新评论,即更新文本等:
我想我会使用:
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)
}
}
这里的任何输入都会很有帮助 -
我在这个主题上看到了其他一些 post,但我还没有设法根据目前所见实施修复。
问题 -
我不断收到:
提前致谢,
W
尝试将 function() {
替换为 () => {
。
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
。因为在您设置的超时被执行时,循环的最后一个变量是 left.Also 检查变量名称它的审查你已提及未评论
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
我一直在寻找这个问题的答案,但我发现的修复没有帮助,所以我想我会直接指出我哪里出了问题(一如既往 - 非常感谢这里的任何帮助)
所以我有一组对象,带有评论,我需要它每 10 秒在网站上 post 一个新评论,即更新文本等:
我想我会使用:
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)
}
}
这里的任何输入都会很有帮助 - 我在这个主题上看到了其他一些 post,但我还没有设法根据目前所见实施修复。
问题 -
我不断收到:
提前致谢, W
尝试将 function() {
替换为 () => {
。
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
。因为在您设置的超时被执行时,循环的最后一个变量是 left.Also 检查变量名称它的审查你已提及未评论
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