Дурацкий пример

Пробую задать аттрибут "id" элементам, каждому id присвоить номер "i", методом forEach.
очевидно, где-то не догоняю.

Вот код с циклом while:

//перменная с массивом
let NavIdS = document.getElementsByClassName("nav__item");

//функция с перебором по длине массива, присвоением аттрибута, записью инфы в значение аттрибута.

NavIdSEach = () => {

let i = 0;

while (i < NavIdS.length) {

NavIdS[i].setAttribute("id", i);

NavIdS[i].innerText = i;

i++;

}};
//вызов функции

NavIdSEach();
---------
Как добиться этого же но только через использование forEach?

Web-технологии

535 постов5.8K подписчиков

Правила сообщества

1. Не оскорблять других пользователей

2. Не пытаться продвигать свои услуги под видом тематических постов

3. Не заниматься рекламой

4. Никакой табличной верстки

5. Тег сообщества(не обязателен) pikaweb

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Через document.querySelectorAll('.nav__item').forEach( ... ) должно работать.

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

querySelectorAll
Это nodelist - его тоже нужно сначала преобразовать в массив (вектор)
Тут кривой-косой перевод:
https://coderoad.ru/13433799/Почему-в-nodelist-нет-forEach

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

https://developer.mozilla.org/en-US/docs/Web/API/NodeList

NodeList.forEach()

Executes a provided function once per NodeList element, passing the element as an argument to the function.

P. S. По твоей же ссылке вопрос отредактирован и дописано

NodeList теперь имеет forEach() во всех основных браузерах

0
Автор поста оценил этот комментарий

nein!
Нет, так не работает. Увы.
Вот так работает:

Array.from(document.getElementsByClassName("nav__item")).forEach(function(val, i) {

val.setAttribute("id", i);

val.innerText = i;

i++;

});

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Работает

Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

document.querySelectorAll(".nav__item").forEach(function(val, i) {

val.setAttribute("id", i);

val.innerText = i;

i++;

});

Действительно работает, если но если селектор Class указывать с точкой в начале.
С утра проглядел точку.
Спасибо!.
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества