Поскольку тело вашего цикла for
использует индекс, вам, вероятно, лучше придерживаться цикла for
, а не переключаться на for-of
.
Вы можете переключатьсяна for-of
(в браузерах, в которых реализовано выполнение итераций NodeList
, или , если вы заполнили его , или с помощью Array.from
), распространив NodeList
в массив (или используя Array.from
для создания массива), а затем с помощью Array.prototype.entries
, который дает итератор, в котором каждое повторяемое значение представляет собой массив [index, value]
:
displayPercentages: function(percentages) {
var fields = document.querySelectorAll(DOMstrings.expensesPercLabel);
for (const [index, el] of [...fields].entries()) {
if (percentages[index] > 0) {
el.textContent = percentages[index] + '%'
} else {
el.textContent = '---';
}
}
}
(обратите внимание, что Array.prototype.entries
является довольно новым и может потребовать многократного заполнения.)
Но : Это действительно довольно косвенно по сравнению с просто использованием цикла for
:
displayPercentages: function(percentages) {
var fields = document.querySelectorAll(DOMstrings.expensesPercLabel);
for (let index = 0; index < fields.length; ++index) {
const el = fields[index];
if (percentages[index] > 0) {
el.textContent = percentages[index] + '%'
} else {
el.textContent = '---';
}
}
}
... или в этом отношении, используя forEach
, который сейчас включен NodeList
(который, опять же, вы можете polyfill ):
displayPercentages: function(percentages) {
document.querySelectorAll(DOMstrings.expensesPercLabel).forEach((el, index) => {
if (percentages[index] > 0) {
el.textContent = percentages[index] + '%'
} else {
el.textContent = '---';
}
});
}