Объект 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, время: 22:01. |