В Javascript я получаю элементы данного класса, используя:
A = document.getElementsByClassName("someclass");
> A contains elements e1, e2, e3, e4
Затем я изменяю класс одного из этих элементов:
document.getElementById("e2").className = "anotherclass";
К моему большому удивлению, массив A был автоматически изменен в процессе !!
> A contains elements e1, e3, e4
Я думал, что массив, возвращаемый getElementsByClassName
, останется тем же, что и был назначен.
- Как это возможно? Это намеренное поведение?
- Есть ли простой способ изменить это?
Вот JSfiddle.
Обратите внимание, что это также верно для getElementById
.
nodeList
был живым (как объяснялось в ответах), вы можете переключиться на использованиеdocument.querySelectorAll()
, который возвращает статическийnodeList
и имеет лучшую поддержку браузера, чемdocument.getElementsByClassName()
. - person jfriend00   schedule 03.05.2014