Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2009, 10:58
MazenRat
 
Сообщений: n/a

Проблема с обработкой события
Вообщем, у меня такая проблема: на странице есть элемент <div> (id которого известен). В этот див, с помощью свойства innerHTML, вставляются картинки (которые позиционируются на странице с помощью css). Для каждой из этих картинок нужно сделать обработчик на событие onmousemove... Задача, вроде, банальная, но у меня, почему-то, после добавления, обработчик срабатывает только на последней добавленной картинке... Помогите, пожалуйста! Вот код:

<html>
<head>
    <title>:::Test:::</title>
</head>
<body>
<div id='t'>
</div>
<script type='text/javascript'>

function add_e( id ){
document.getElementById( id ).onmousemove = function( e ){
    e = e || event;
    var obj = e.target || e.srcElement;// obj - объект под курсором
    alert("обработка события...");
    }
}

function add_i( id, x, y ){
    document.getElementById( 't' ).innerHTML += "<img id='"+id+"' src='[путь к картинке]'  style=\"position: absolute; left: "+x+"; top: "+y+"\">";
    add_e( id );
}

add_i( 'i1', 500, 600 );
add_i( 'i2', 400, 405 );

</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2009, 11:06
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Вы перетираете innerHTML, следовательно, все элементы создаются заново.
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2009, 11:13
Интересующийся
Отправить личное сообщение для MazenRat Посмотреть профиль Найти все сообщения от MazenRat
 
Регистрация: 17.07.2009
Сообщений: 14

Kolyaj, я не понял, извините нуба... Ведь оператор += делает операцию "Левому операнду присваивается сумма левого операнда и правой части.". Почему тогда innerHTML перетирается? И как это можно исправить?
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2009, 11:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Потому что += это просто сокращение для a = a + b. Вы задаете элементу новый innerHTML, все элементы, которые были в нем до этого, удаляются.

Пользуйтесь DOM методами.
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2009, 11:25
Интересующийся
Отправить личное сообщение для MazenRat Посмотреть профиль Найти все сообщения от MazenRat
 
Регистрация: 17.07.2009
Сообщений: 14

Все, разобрался, спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить this в обработчике события указывать на объект? Dmitryk Events/DOM/Window 3 16.03.2009 08:45
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47
Явный вызов процедуры обработки события. supchik Общие вопросы Javascript 18 27.01.2009 13:16
Проблема с обработкой селектов html кода, пришедшего через ajax запрос Rage jQuery 6 26.01.2009 14:15
проблема с обработкой DIV nerik AJAX и COMET 2 22.08.2008 17:40