Как перебрать HTMLCollection в Javascript / Babel - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь настроить веб-сайт, используя webpack и Babel.Я пытаюсь назначить событие «onclick» всем элементам таблицы, используя jQuery.Я выбираю все элементы строки таблицы «clickable-row», используя getElementsByClassName, который возвращает HTMLCollection, но при вызове .length он возвращает 0. Вывод коллекции на консоль показывает, что в ней есть элементы.Это заставляет меня думать, что это проблема Вавилона.

Я попытался преобразовать его в массив - массив пуст.Пробовал document.querySelectorAll();, который возвращает пустой NodeList и оператор ..., пытался использовать .forEach() и пытался использовать HTMLCollection.prototype.forEach = Array.prototype.forEach;, ни один из которых ни к чему не приводит.

Вот код, который я использую:

$('document').ready(getTableRows);

function getTableRows() {
    let tableRows = document.getElementsByClassName("clickable-row");
    console.log(tableRows);
    console.log("Length of this collection = " + tableRows.length);
    let array = Array.from(tableRows);
    console.log("Converted to array");
    console.log(array);
}

Вот результат, возвращаемый консолью в google chrome:

HTMLCollection []
    0: tr.clickable-row
    1: tr.clickable-row
    2: tr.clickable-row
    3: tr.clickable-row
    4: tr.clickable-row
    5: tr.clickable-row
    6: tr.clickable-row
    7: tr.clickable-row
    8: tr.clickable-row
    9: tr.clickable-row
    length: 10
    __proto__: HTMLCollection

Length of this collection = 0

Converted to array
[]
    length: 0
    __proto__: Array(0)

Я пытался воссоздать то же самое в jsfiddle, но это не вызвало того же поведения, которое заставляет меня думать даже большеэто вавилонская пачка.http://jsfiddle.net/h2emxdf1/2/

Извините, если я что-то перепутал, но я новичок, если речь идет обо всей этой паутине.

1 Ответ

0 голосов
/ 25 мая 2019

Благодаря @str я понял, что js выполняет функции асинхронно, что действительно было проблемой в моем случае.Поэтому я создал обратный вызов.Теперь все работает так, как должно быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...