Javascript.RU

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

Добавить функцию в обработчик onclick
Подскажите кто сможет
Надо добавить к onclick функцию. Важно именно добавить к уже существующей.
Мои эксперименты остановились на следующем коде

originalhandler=menunodes[i].getAttribute('onclick');
if(typeof(originalhandler)=='function')
	{
		originalhandler.call();//срабатывает
		menunodes[i].onclick=function()	{	originalhandler.call(); MenuClick(this); };
		originalhandler.call();//срабатывает
	}
	else
	menunodes[i].onclick=function()	{	MenuClick(this); };


при клике говорит что не знает originalhandler ...

Последний раз редактировалось Андрей Параничев, 15.02.2009 в 19:02. Причина: Пользуйтесь bb-тегами [js] и [html] для оформления листингов кода в теле сообщения
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2009, 12:15
Аспирант
Отправить личное сообщение для IIIEPJIOK Посмотреть профиль Найти все сообщения от IIIEPJIOK
 
Регистрация: 23.12.2008
Сообщений: 75

Цитата:
Мои эксперименты остановились на следующем коде
Поэкспериментируйте с этим
<html>
	<script>
		function setOnClick(){
			document.getElementById('1').onclick = function(){onClickBtnOne.call()}			
		}
		function onClickBtnOne(){
			alert('handler one');
		}
		function reformer(){
			var f = document.getElementById('1').onclick;
			document.getElementById('1').onclick = function(){onClickBtnTwo.call(); f.call()}
		}
		function onClickBtnTwo(){
			alert('handler two');
		}		
	</script>
  <body id="body" onload="setOnClick(); reformer();">
	<input type="button" id="1">
  </body>
</html>



ЗЫ
getAttribute возвращает строку

Последний раз редактировалось IIIEPJIOK, 12.02.2009 в 12:34.
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2009, 14:05
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А об addEventListener/attachEvent ничего не слышали?
Сообщение от IIIEPJIOK
onClickBtnOne.call()
call тут зачем?

Сообщение от IIIEPJIOK
getAttribute возвращает строку
А вы в ИЕ для аттрибутов событий попробуйте
Ответить с цитированием
  #4 (permalink)  
Старый 12.02.2009, 15:13
Новичок на форуме
Отправить личное сообщение для slayer_tmb Посмотреть профиль Найти все сообщения от slayer_tmb
 
Регистрация: 11.02.2009
Сообщений: 5

ЗЫ
getAttribute возвращает строку

IE возвращает функцию
а call я вызывал для проверки что возвращенная функция реально работает
и она работает
насчет атача не знал спасибо за совет почитаю
Ответить с цитированием
  #5 (permalink)  
Старый 12.02.2009, 15:21
Новичок на форуме
Отправить личное сообщение для slayer_tmb Посмотреть профиль Найти все сообщения от slayer_tmb
 
Регистрация: 11.02.2009
Сообщений: 5

Сообщение от IIIEPJIOK Посмотреть сообщение
Поэкспериментируйте с этим
Спасибо усё работает.
Только я не пойму почему у меня не работает
я делаю
originalhandler=menunodes[i].getAttribute('onclick');
(и он 100% возвращает функцию)
ты делаешь
var f = document.getElementById('1').onclick;

далее
я делаю
menunodes[i].onclick=function() { originalhandler.call(); MenuClick(this); };
ты:
document.getElementById('1').onclick = function(){onClickBtnTwo.call(); f.call()}

но у тебя на f.call не ругается а у меня на originalhandler.call(); ругается


гы
document.getElementById('1').addEventListener("cli ck", function() {onClickBtnTwo();}, false);
повесила IE

Последний раз редактировалось slayer_tmb, 12.02.2009 в 15:48.
Ответить с цитированием
  #6 (permalink)  
Старый 12.02.2009, 15:51
Аспирант
Отправить личное сообщение для IIIEPJIOK Посмотреть профиль Найти все сообщения от IIIEPJIOK
 
Регистрация: 23.12.2008
Сообщений: 75

Цитата:
call тут зачем?
привычка, не более
Данный пример, я рассматриваю, как частный от:
Element.onEvent = function(){refObject.method.call(refObject, param1, ..., paramN)}
Ответить с цитированием
  #7 (permalink)  
Старый 12.02.2009, 16:04
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

slayer_tmb,
На все ваши вопросы ответят две статьи:
http://javascript.ru/tutorial/basic/...ispol-zovaniia
http://javascript.ru/start/events/intro
Ответить с цитированием
  #8 (permalink)  
Старый 12.02.2009, 16:08
Аспирант
Отправить личное сообщение для IIIEPJIOK Посмотреть профиль Найти все сообщения от IIIEPJIOK
 
Регистрация: 23.12.2008
Сообщений: 75

Цитата:
А вы в ИЕ для аттрибутов событий попробуйте
попробовал.....
имею сказать две вещи
1. я х@ею дорога я редакция
2. ИЕ возвращает возвращает не саму функцию обработчик, а некую, созданную автоматически, в которой вызывается функция обработчик....и проблему "почему не работает" надо искать в этом направлении.
Ответить с цитированием
  #9 (permalink)  
Старый 12.02.2009, 16:10
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от slayer_tmb
но у тебя на f.call не ругается а у меня на originalhandler.call(); ругается
Потому что getAttribute возвращает строку везде, кроме ИЕ для событий.
Ответить с цитированием
  #10 (permalink)  
Старый 12.02.2009, 16:29
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Просто не устанавливайте обработчики через setAttribute и не получайте их, через getAttribute. В случае этих функций работа не гарантируется, а по спецификации значением атрибута может быть только примитивное значение.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 23:46
Вопрос про вызов события onClick skyfish Общие вопросы Javascript 12 27.12.2008 19:12
Изменить текст под изображением на котором событие onclick GodRa Общие вопросы Javascript 2 12.11.2008 23:15
Изменение onClick из Javascript Александр Events/DOM/Window 5 01.05.2008 16:44