document.getElementsByClassName('changeme').id = pagenum;
Эта строка кода не устанавливает id
элементов с классом changeme
.getElementsByClassName
возвращает NodeList
, содержащий элементы.Вы устанавливаете id
свойство на NodeList
.Очевидно, это не отражается на элементах в списке.
Для этого работайте над самими элементами.Если у вас есть один элемент с классом, это просто:
document.getElementsByClassName('changeme')[0].id = pagenum;
Если у вас есть больше элементов, вам понадобится цикл:
var els = document.getElementsByClassName('changeme');
for (var i = 0; i < els.length; i++ ) {
els[i].id = pagenum;
}
Однако, это, вероятно, плохоидея изменить элемент id
.Использование класса вполне может быть лучшей идеей.
Edit Чтобы объяснить, почему ваш второй alert
работает, это потому, что при вызове возвращается то же самое NodeList
до getElementsByClassName
.Начиная с спецификации :
Когда метод [getElementsByClassName
] снова вызывается для объекта HTMLElement с тем же аргументом, пользовательский агент может вернуть тот же объект, что и объектвозвращается по предыдущему звонку.