javascript - 组合 2 个字符串时,Dom 元素显示的结果与静态输入的查询不同

标签 javascript for-loop

我确信我忽略了最明显的,但我需要循环浏览页面上的一些链接,但由于某种原因,当我尝试引入迭代数字并更改为字符串时,它没有工作。不工作是指当我运行该函数时,它会给出错误“未捕获的类型错误:无法读取 null 的属性“单击””。第一个示例显示它无需循环即可工作。第二个是不起作用的字符串组合。

这有效!

function myFunction() {
  var grids = document.getElementsByClassName('gridRow')
  setInterval(function(){ 
    for(i=1;i<grids.length;i++) {
      var test = '_resultsGrid__Button_1'
      document.getElementById(test).click()
    }
  }, 2000);
}

这不是!

function myFunction() {
  var grids = document.getElementsByClassName('gridRow')
  setInterval(function() { 
    for(i=1;i<grids.length;i++) {
      var test = '_resultsGrid__Button_' + String(i)
      document.getElementById(String(test)).click()
    }
  }, 2000);
}

最佳答案

而不是做

for (i = 1;i < grids.length;i++) { ... }

你应该这样做

for (i = 1;i <= grids.length;i++) { ... }

在第一个示例中,您仅在 i 时循环是 less than (<) 元素长度,因此循环次数比长度少一次;您需要使用 less than or equal to (<=) 运算符改为包含最后一次迭代

<小时/>
function myFunction() {
  var grids = document.getElementsByClassName('gridRow')

  setInterval(function() { 
    for(i = 1; i <= grids.length; i++) {
      var test = '_resultsGrid__Button_'+String(i)
      document.getElementById(String(test)).click()
    }
  }, 2000);
}

关于javascript - 组合 2 个字符串时,Dom 元素显示的结果与静态输入的查询不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59671408/

相关文章:

javascript - 必填字段未收到 form_for 错误

javascript - 匹配中的变量(javascript)

javascript - 需要有关文本扩展器 jQuery 插件的帮助

c - 仅反转字符串中的某些单词

for-loop - 简化迭代循环(使用 crate )

javascript - 关于验证文本框的说明

javascript - 什么使 JavaScript 函数异步?

Javascript:嵌套for循环赋值

c++ - 默认情况下不使用 std::next 的 Range-for 循环?

java - ForLoop在覆盖方法Android中不断循环