Пытаюсь ещё раз понять:
Сообщение от tsigel
|
Это вообще 2 разных случая. Ещё раз. Если сейчас не поймете - прочтите ЦЕЛИКОМ статью которую я кинул.
Вот Ваш код:
<div id="id1" onclick="Function1()">Click on me</div>
<script>
"use strict"
var id1 = document.getElementById("id1");
id1.outerHTML = id1.outerHTML.replace('onclick="Function1()"', 'onclick="Function2()"');
alert(id1.outerHTML);
function Function1(){
alert('Function1 is executed!');
}
function Function2(){
alert('Function2 is executed!');
}
</script>
В строке 4 вы записали в переменную "id1" ссылку на елемент.
|
Да. Это значит, что теперь переменная id1 - это адрес объекта document.getElementById("id1"). А значит (поскольку указателей в javascript нету) каждый раз когда я обращаюсь к переменной id1, я работаю НАПРЯМУЮ с объектом document.getElementById("id1"). Всё, что я делаю с переменной id1, должно одновременно происходить с объектом document.getElementById("id1") и наоборот. Ведь переменная id1 и объект document.getElementById("id1") (а также document.getElementsByTagName("div")[0] и т.д.) - это два адреса, состоящих из 4-х байт. И они равны между собой.
Сообщение от tsigel
|
В строке 5 Вы УДАЛИЛИ тег на который ссылалась переменная "id1"
|
Именно.
id1.onclick = null
document.getElementById("id1").onclick = null
Сообщение от tsigel
|
(при этом не удаляя переменную)
|
id1.onclick = null
document.getElementById("id1").onclick = null
Сообщение от tsigel
|
, и СОЗДАЛИ НОВЫЙ тег, ссылку на который вы НИКУДА не записывали.
|
id1.onclick = null
document.getElementById("id1").onclick = null
Вот так я понимаю работу ссылок. В чём ошибка моего понимания?
Сообщение от tsigel
|
Оператор присвоения ("=") в данном случае никак не связан с вашей переменной! Он говорит чтобы вы записали НОВУЮ строку на место где находится Ваш элемент.
|
Честно говоря, эти два предложения вообще не понял.
Сообщение от tsigel
|
После того как строка записана браузер понимает что это тег.
|
А следовательно, и это тоже.