|
Что за ФИГНЯ?! У этого языка программирования логика вообще есть?!
<div id="id1" onclick="Function1()">Click on me</div> <script> 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> Нажмите на "Посмотреть". Кликните на "ОК" при алерте. Потом кликните на "Click on me". ЭТО ВООБЩЕ ЧТО ТАКОЕ? |
jaroslav.tavgen,
и что не устраивает то?) Все же логично) Вы в 4-й строке перезаписали элемент, а ссылка осталась на старый. |
<div id="id1" onclick="Function1()">Click on me</div> <script> var id1 = document.getElementById("id1"); id1.outerHTML = id1.outerHTML.replace('onclick="Function1()"', 'onclick="Function2()"'); alert(id1.outerHTML); alert(document.getElementById("id1").outerHTML); function Function1(){ alert('Function1 is executed!'); } function Function2(){ alert('Function2 is executed!'); } </script> |
tsigel,
У переменной A значение B. Я сказал интерпретатору: "изменить значение B на значение C". Затем я говорю интерпретатору: "Покажи мне значение переменной A". Интерпретатор отвечает: "Значение переменной A ни хрена не поменялось - как было B, так и осталось". Однако когда я прошу его выполнить действие, то он выполняет действие C!!! Где логика? A = B; A = C; WriteContentsOf(A) // Пишет: B DoAction(A) // Делает действие C |
tsigel,
По поводу Вашего кода : я эту разницу тоже увидел. Но какая логика скрывается за этим? |
jaroslav.tavgen,
Нененене, Девид Блейн! Все не так) Вы сказали браузеру: Сделай мне элемент по клику на который отработает "ф1" и сохрани этот элемент в переменную "А". А теперь удали этот элемент (а переменная осталась) и замени его на элемент по клику на который отработает "ф2". Теперь покажи мне переменную "А" (он чесно показывает по тому что там осталась ссылка на удаленный элемент) |
tsigel,если честно, кое-что непонятно.
Цитата:
Ведь вначале он должен удалить элемент, создать новый элемент, И ЗАТЕМ ПОСЛЕ ЭТОГО приравнять полученный результат к переменной A (id1.outerHTML = ...). Хоть по ссылке хоть по значению. |
jaroslav.tavgen,
Браузер должен только спецификации, а поведение кторого вы от него хотите там не описано. Может быть вы хотите потом добавить её обратно,если браузер будет чистить переменные на элементы которые он удалил, это сильно свяжет руки программистам. Вы должны сами следить за своими переменными. К тому же вы просто неправильно используете АПИ, если бы вы поменяли атрибут методом setAttribute то outerHTML показал бы вам то что вы хотите и не было бы никаких "удаленных" элементов. |
Цитата:
Только оператор "=" может сказать что переменную надо заменить. И это ЛОГИЧНО. |
Цитата:
|
Часовой пояс GMT +3, время: 21:34. |
|