Показать сообщение отдельно
  #83 (permalink)  
Старый 30.03.2015, 00:11
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Пытаюсь ещё раз понять:

Сообщение от 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 Посмотреть сообщение
После того как строка записана браузер понимает что это тег.
А следовательно, и это тоже.

Последний раз редактировалось jaroslav.tavgen, 30.03.2015 в 00:15.
Ответить с цитированием