При объединении 2 строк элемент Dom не показывает те же результаты, что и введенный запрос stati c - PullRequest
0 голосов
/ 09 января 2020

Я уверен, что пропускаю самое очевидное, но мне нужно l oop через несколько ссылок на странице, но по какой-то причине, когда я пытаюсь ввести повторяющееся число и изменить его на строку, это не работает Не работая, я имею в виду, когда я запускаю функцию, она выдает ошибку 'Uncaught TypeError: Невозможно прочитать свойство' click 'of null'. Первый пример показывает, что он работает без l oop. Второе - строковая комбинация, которая не работает.

Это работает!

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);
}

1 Ответ

1 голос
/ 09 января 2020

Вместо выполнения

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

Вы должны выполнять

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

В первом примере вы выполняли цикл только тогда, когда i было less than (<) длина элементов, так что вы бы l oop на один раз меньше длины; вместо этого вы захотите использовать оператор 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...