Javascript.RU

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

Что за ФИГНЯ?! У этого языка программирования логика вообще есть?!
<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, 25.03.2015 в 14:44.
Ответить с цитированием
  #2 (permalink)  
Старый 25.03.2015, 14:43
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

jaroslav.tavgen,
и что не устраивает то?) Все же логично)

Вы в 4-й строке перезаписали элемент, а ссылка осталась на старый.

Последний раз редактировалось tsigel, 25.03.2015 в 14:48.
Ответить с цитированием
  #3 (permalink)  
Старый 25.03.2015, 14:49
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

<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>
Ответить с цитированием
  #4 (permalink)  
Старый 25.03.2015, 14:51
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

tsigel,

У переменной A значение B.

Я сказал интерпретатору: "изменить значение B на значение C".
Затем я говорю интерпретатору: "Покажи мне значение переменной A".
Интерпретатор отвечает: "Значение переменной A ни хрена не поменялось - как было B, так и осталось".

Однако когда я прошу его выполнить действие, то он выполняет действие C!!!

Где логика?

A = B;
A = C;
WriteContentsOf(A) // Пишет: B
DoAction(A) // Делает действие C
Ответить с цитированием
  #5 (permalink)  
Старый 25.03.2015, 14:53
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

tsigel,
По поводу Вашего кода : я эту разницу тоже увидел. Но какая логика скрывается за этим?
Ответить с цитированием
  #6 (permalink)  
Старый 25.03.2015, 14:54
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

jaroslav.tavgen,
Нененене, Девид Блейн! Все не так)

Вы сказали браузеру: Сделай мне элемент по клику на который отработает "ф1" и сохрани этот элемент в переменную "А". А теперь удали этот элемент (а переменная осталась) и замени его на элемент по клику на который отработает "ф2".

Теперь покажи мне переменную "А" (он чесно показывает по тому что там осталась ссылка на удаленный элемент)

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

tsigel,если честно, кое-что непонятно.

Сообщение от tsigel
Вы сказали браузеру: Сделай мне элемент по клику на который отработает "ф1" и сохрани этот элемент в переменную "А". А теперь удали этот элемент (а переменная осталась)
А почему переменная осталась?

Ведь вначале он должен удалить элемент, создать новый элемент, И ЗАТЕМ ПОСЛЕ ЭТОГО приравнять полученный результат к переменной A (id1.outerHTML = ...). Хоть по ссылке хоть по значению.
Ответить с цитированием
  #8 (permalink)  
Старый 25.03.2015, 15:11
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

jaroslav.tavgen,
Браузер должен только спецификации, а поведение кторого вы от него хотите там не описано.

Может быть вы хотите потом добавить её обратно,если браузер будет чистить переменные на элементы которые он удалил, это сильно свяжет руки программистам. Вы должны сами следить за своими переменными. К тому же вы просто неправильно используете АПИ, если бы вы поменяли атрибут методом setAttribute то outerHTML показал бы вам то что вы хотите и не было бы никаких "удаленных" элементов.
Ответить с цитированием
  #9 (permalink)  
Старый 25.03.2015, 15:14
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Сообщение от jaroslav.tavgen
Ведь вначале он должен удалить элемент, создать новый элемент, И ЗАТЕМ ПОСЛЕ ЭТОГО приравнять полученный результат к переменной A (id1.outerHTML = ...). Хоть по ссылке хоть по значению.
Что-то я не увидел у вас после строки 4 что-то похожее на "id1 = ...";
Только оператор "=" может сказать что переменную надо заменить. И это ЛОГИЧНО.
Ответить с цитированием
  #10 (permalink)  
Старый 25.03.2015, 15:16
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Сообщение от tsigel Посмотреть сообщение
Что-то я не увидел у вас после строки 4 что-то похожее на "id1 = ...";
Только оператор "=" может сказать что переменную надо заменить. И это ЛОГИЧНО.
Почему "после"? "В" строке 4!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
http://gigalit.info - Мои контакты Маэстро Ваши сайты и скрипты 70 08.12.2011 03:12
фрактальный сыр x-yuri Оффтопик 76 23.11.2011 21:59
О фрилансе (Личный опыт) free Оффтопик 105 18.08.2011 17:02
Как (эффективно) изучать JavaScript? JSTalker Общие вопросы Javascript 33 23.12.2010 03:13
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37