Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Событие onClick (https://javascript.ru/forum/events/4972-sobytie-onclick.html)

avtor01 03.09.2009 16:41

Событие onClick
 
Приветствую, уважаемая публика.

Возникли проблемы с Internet Explorer 7-8 при обработке события onClick, назначенным самим же javascript...
....
<td id="id_parent" onClick="javascript:click_and_light('parent_id');">Каие-то строковые данные</td>
....


Функция javascript:
function click_and_light(id) {
      var obj = document.getElementById(id);
      var last_child = obj.lastChild;

	// Данная конструкция удаляет текстовый элемент textNode (данные из ячейки таблицы) из потока, чтобы вставить его вконце
	var data = last_child.innerHTML;					
	last_child.removeChild(last_child.firstChild);

	// Создадим контейнер для меню
	var div_td = document.createElement('div');
	div_td.className = "parent_menu";
	last_child.appendChild(div_td);
	
	// Создадим меню
	var parent_menu = last_child.getElementsByTagName('div');  // Находим родительский контейнер div
	var div_new = document.createElement('div');
	parent_menu['0'].appendChild(div_new);
	
	var img_add = document.createElement('img');
	img_add.src = "/inc/images/add.gif";
	img_add.setAttribute("onclick", "javascript:alert('test');");
	parent_menu['0'].firstChild.appendChild(img_add);

	var data_node = document.createTextNode(data);
	last_child.appendChild(data_node);
}


В Opera,Firefox и в Google Chrome, все получается так, как я и хотел: ячейка таблицы сохранила св-во onClick, но при этом, если я мышью жмякаяю по моей пикче, то alert отрабатывает.
В ИЕ не работает - отрабатывает только родительский onClick, а на пикчу ИЕ наглым образом "ложет". При этом, если просмотреть исходный код страницы, то нужное мне событие присутствует.

Пробовал убрать с родительской ячейки onClick - результата ноль.

Надеюсь на Вашу помощь

Octane 03.09.2009 16:49

Псевдопротокол javascript: в атрибутах тегов, отвечающих за обработку событий, писать не нужно.

img_add.onclick = function() {
    alert('test');
};


Атрибуты и свойства: модель DOM и отличия в Internet Explorer

avtor01 03.09.2009 16:54

Спасибо, помогло. А в чем разница?

Octane 03.09.2009 17:01

В статье по ссылке рассказывают в чем разница.


Часовой пояс GMT +3, время: 15:59.