Объект style.
Вообщем, в body сделал 2 тестовых div-a:
<div id="first"> Первый элемент. </div> <div id="second"> Второй элемент. </div> И написал такой js код: var firstDiv = document.getElementById("first"); var secondDiv = document.getElementById("second"); firstDivStyle = firstDiv.style; secondDiv.style = firstDivStyle; secondDiv.style.backgroundColor = "gray"; То есть объект style первого div-а присваиваю второму div-у и меняю свойство backgroundColor через style второго div-a. Думал, что оба элемента приобретут фон серого цвета, т.к. в js когда мы присваиваем уже созданный объект в какую-либо переменную, то эта переменная получает ссылку на него (копия объекта не создается) и в памяти остается только один объект style на двоих. По идее, получается, что если мы будем менять style в любом из этих двух div-ов, то эти свойства будут распространяться и работать на этих двух div-ах, но в браузере у меня почему-то серым становится только второй div. Вот понять не могу почему так. |
<body> <div id="first"> Первый элемент. </div> <div id="second"> Второй элемент. </div> <script> var firstDiv = document.getElementById("first"); var secondDiv = document.getElementById("second"); secondDiv.style.backgroundColor = "gray"; firstDiv.style = secondDiv.style.cssText; </script> </body> |
И не забывайте сто скрипт выполняется сверху вниз, то есть если будете что-то присваивать до смены фона, присваиваться будет именно то значение которое было до смены.
|
Я хотел узнать почему в моем случае это не работает) У них же вроде объект style один на двоих и изменение в одном влечет изменение в другом, но тут этого не происходит.
|
Цитата:
|
Цитата:
|
Ну так а почему не прокатывает?) 2 дива ссылаются на один и тот же объект style, значит при изменении свойств объекта style через любой из этих двух элементов оно должно распространяться сразу на оба дива. Я же присваиваю не само значение (объект style), а ссылку на этот объект style, получается у нас теперь есть 2 ссылки на объект style, через который мы можем менять его.
|
Ну пока да, приходиться также считать. Просто хотелось узнать именно почему он запрещает это делать, наверное в документации где-нибудь есть про это. Пойду искать
|
Цитата:
|
Понял, спасибо.
|
Часовой пояс GMT +3, время: 06:07. |