Цитата:
|
http://learn.javascript.ru/basic-dom-node-properties
Цитата:
|
Цитата:
id1.outerHTML = id1.outerHTML.replace('onclick="Function1()"', 'onclick="Function2()"'); он бы выдал ошибку из-за отсутствия "var id1.outerHTML;"? |
Цитата:
|
Цитата:
"use strict" a = "b" |
Цитата:
<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> |
Цитата:
Вот Ваш код: <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" ссылку на елемент. В строке 5 Вы УДАЛИЛИ тег на который ссылалась переменная "id1" (при этом не удаляя переменную), и СОЗДАЛИ НОВЫЙ тег, ссылку на который вы НИКУДА не записывали. Оператор присвоения ("=") в данном случае никак не связан с вашей переменной! Он говорит чтобы вы записали НОВУЮ строку на место где находится Ваш элемент. После того как строка записана браузер понимает что это тег. |
Цитата:
Моя версия следующая. Когда ты меняешь outerHTML, он у тебя загружается в "виртуальную машину", а в исходнике он остается неизменным. Так вот, интерпретатор считывает outerHtml, похоже, из исходника, по-крайней мере в части между треугольными скобками. innerHTML все ж таки перерисовывается. Возможно это просто тупость имплементаторов, возможно, дрочево в присядку под компиляцию, чтобы меньше проходов делать. Но в любом случае, это ужасный косяк, да. |
jaroslav.tavgen,
Советую обратить внимание на карму "Горного Троля" с ником "newuser1001", и не слушать бред который он извергает. |
теперь я попробую объяснить указатели))
никаких дум элементов, возьмем обычный массив, но в массиве может находиться еще один массив, смотрим: var a = [1, 2, 3, [6, 7, 8]]; console.log(a);//посмотрим чему равна переменная a console.log(a[0]);//теперь посмотрим чему равен 0ой элемент массива (= 1) console.log(a[3]);//теперь посмотрим чему равен 3ий элемент массива (он ревен другому массиву) //запишем в переменную b этот массив var b = a[3]; //но что значит запишем в переменную b??? давай выведем console.log(b); // = [6, 7, 8] //теперь изменими значение какого то элемента массива b[0] = -9; console.log(b); //смотрим результат console.log(a[3]);//а теперь смотрим на значение 3го элемента в массиве "а". чудо? две переменные ссылаются на 1 массив!! a.splice(3, 1);//а теперь удалим из массива а 3ий элемент console.log(a);//смотрим... console.log(b);//а в b массив то сохранен |
Часовой пояс GMT +3, время: 08:55. |