如何添加时间功能以点击

时间:2017-01-28 13:18:52

标签: javascript loops settimeout

我在点击页面中的按钮时尝试在点击之间添加暂停。

它给了我“Uncaught TypeError:无法读取属性'点击'未定义”

var inputs = document.getElementsByClassName('xxxxxx'); 

for(var i=0;i<inputs.length;i++) { 
    setTimeout(function() {
        inputs[i].click();
    }, (1000 * i)) 
}

不确定如何接近它。如果我删除超时,则点击工作正常。

2 个答案:

答案 0 :(得分:2)

这是一个叫做&#34;关闭循环变量&#34;的问题。发生的事情是,当您的超时实际触发时,i等于inputs.length,这超出了输入集的末尾。

最简单的解决方案:使用Array#forEach,以便您有一个单独的闭包,其中包含每个输入本身和一个单独的,非波动的i副本,而不是一个不断变化的i变量:

var inputs = document.getElementsByClassName('xxxxxx'); 

Array.prototype.slice.call(inputs).forEach(function (input, i) {
     setTimeout(function () { 
         input.click(); 
     }, 1000 * i);
});    

答案 1 :(得分:0)

如果为null,请尝试测试输入:

if (inputs[i] != null) {
inputs[i].click();}

并尝试在文档完成时启动计时器。