我在点击页面中的按钮时尝试在点击之间添加暂停。
它给了我“Uncaught TypeError:无法读取属性'点击'未定义”
var inputs = document.getElementsByClassName('xxxxxx');
for(var i=0;i<inputs.length;i++) {
setTimeout(function() {
inputs[i].click();
}, (1000 * i))
}
不确定如何接近它。如果我删除超时,则点击工作正常。
答案 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();}
并尝试在文档完成时启动计时器。