Я действительно надеюсь, что я пропустил что-то очевидное здесь. Вот скриншот консоли в Chrome, мертвое передо мной (ну, другие вкладки):JavaScript: тот же элемент, полученный getElementById, но .. другой?
e
был получен с помощью .getElementById("overlayidentifier")
мной, с консоли. Другая переменная используется довольно грязным сценарием, включенным на сайт, с которым я работаю.
Прежде чем я погрузился в бездну скрипта, который изначально создает и работает с overlayidentifier
, я просто хотел узнать .. что здесь происходит.
Все .style
Изменения в e
имеют эффект - ничего не происходит, если overlayidentifier.style.~
изменен.
С чего начать?
Демистифицировано. Для более любопытных:
Проблема была одинокая .innerHTML +=
-различная часть кода где-то на странице. Использование .innerHTML
приводит к восстановлению структуры DOM внутри элемента, на который он вызывается. Таким образом, любые ссылки элементов внутри, полученные до назначения .innerHTML
, становятся недействительными в запутанном виде: они сохраняют большинство своих атрибутов, с которыми можно взаимодействовать нормально, но они больше не находятся в дереве DOM. Об этом свидетельствует .parentNode
, возвращающий null
.
На самом деле это была пустая трата времени.
вот скринкаст некоторых советов и трюков с помощью хром-консоли/dev tools http://talkminer.com/viewtalk.jsp?videoid=nOEw9iiopwI&q= – Kristian