Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.11.2012, 03:05
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Назначить oncick тегу A (anchor)
Пробую в Firefox динамически создать тэг "A" и назначить ему свой onclick, в текстовом виде, но ничего не выходит.

Смотрю onclick перед и после присвоения, - а он почему-то одинаково равен null и до, и после.

В чём дело? Почему нельзя присвоить функцию в тестовом виде, или как это правильно сделать?

Вот код:
var anch = document.createElement('A');
anch.href='#';

alert('До присвоения: anch.onclick == ' + anch.onclick);
anch.onclick = "alert(this); return false; ";
alert('После присвоения\n"alert(this); return false; "\n\n== ' + anch.onclick);
anch.onclick = "alert(this);";
alert('После присвоения\n"alert(this); "\n\n== ' + anch.onclick);
anch.onclick = "javascript:alert(this);";
alert('После присвоения\n"javascript:alert(this);"\n\n== ' + anch.onclick);
anch.onclick = "function (){alert(this); return false; }; ";
alert('После присвоения\n"function (){alert(this); return false; }; "\n\n== ' + anch.onclick);
anch.onclick = "(function (){alert(this); return false; })";
alert('После присвоения\n"(function (){alert(this); return false; })"\n\n== ' + anch.onclick);

// а теперь попробуем назначить нетекстовую функцию
anch.onclick = (function (){alert(this); return false; });
alert('После присвоения\n(function (){alert(this); return false; })\n\n== ' + anch.onclick);

anch.onclick = function (){alert(this); };
alert('После присвоения\nfunction (){alert(this); }\n\n== ' + anch.onclick);

anch.innerHTML = 'click here';
document.body.appendChild(anch);

Последний раз редактировалось Почемучкин, 07.11.2012 в 03:17.
Ответить с цитированием
  #2 (permalink)  
Старый 07.11.2012, 03:17
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Сам нашел ответ. Работает это:

anch.setAttribute( "onclick", "alert(this);" );
Ответить с цитированием
  #3 (permalink)  
Старый 07.11.2012, 09:12
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

мде, ну и извращённое у тебя мышление, зачем тебе это?
<body><script type="text/javascript">
var anch = document.createElement('a');
anch.onclick = new Function("alert('It,s work')");
anch.innerHTML = 'click here';
document.body.appendChild(anch);
</script></body>
__________________
.

Последний раз редактировалось Skipp, 07.11.2012 в 09:16.
Ответить с цитированием
  #4 (permalink)  
Старый 07.11.2012, 12:21
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Ух ты, спасибо
Ответить с цитированием
  #5 (permalink)  
Старый 07.11.2012, 19:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Skipp,
Ты тоже со странностями )
anch.onclick = function(e) {
    alert('It,s work');
}
Ответить с цитированием
  #6 (permalink)  
Старый 08.11.2012, 05:17
Кандидат Javascript-наук
Отправить личное сообщение для Your Посмотреть профиль Найти все сообщения от Your
 
Регистрация: 03.10.2012
Сообщений: 147

Сообщение от Почемучкин Посмотреть сообщение
Сам нашел ответ. Работает это:

anch.setAttribute( "onclick", "alert(this);" );
Ну в некоторых браузерах это не сработает...
Например:

Атрибуты и обработчики событий
В IE текстовое значение, присвоенное атрибуту onclick, не является функцией и не будет работать:
elem.setAttribute('onclick', 'alert(something)') // в IE не работает


http://javascript.ru/tutorial/dom/at...nye-znacheniya
Ответить с цитированием
  #7 (permalink)  
Старый 08.11.2012, 10:01
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

danik.js,
Почему со странностями, он просил,
Сообщение от Почемучкин
в текстовом виде,
я и ответил.
__________________
.
Ответить с цитированием
  #8 (permalink)  
Старый 08.11.2012, 14:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Skipp, извиняюсь, недоглядел. Значит ТС у нас со странностями
Ответить с цитированием
  #9 (permalink)  
Старый 11.11.2012, 20:35
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

danik.js,
А может ты со странностями

Your,
Спасибо большое, буду знать. Тогда остается решение by Skipp.
Ответить с цитированием
  #10 (permalink)  
Старый 11.11.2012, 22:20
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Чтоб не осталось неопределенности, кто со странностями,не мог бы ты объяснить зачем тебе именно "текстовый вид" присваивать?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как назначить событие html-элементу? Jony X Общие вопросы Javascript 15 15.09.2009 20:55