Javascript.RU

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

onclick привязка ф-ции
Почему у меня alert срабатывает только на последнем елементе?

function build(){
	var menu = document.getElementById('menu'); 
	for(var i = 0; i < 3; i++){
		menu.innerHTML +=  '<li><div class="button" id="item-'+ i + '">page</div></li>';
		document.getElementById('item-'+ i).onclick = function(i) {
        		return function() { alert(i);}
		}(i);
	  }		
}

Последний раз редактировалось ShuggyBumblebee, 24.11.2013 в 22:01.
Ответить с цитированием
  #2 (permalink)  
Старый 24.11.2013, 22:22
Интересующийся
Отправить личное сообщение для ShuggyBumblebee Посмотреть профиль Найти все сообщения от ShuggyBumblebee
 
Регистрация: 24.11.2013
Сообщений: 20

тоже самое
Ответить с цитированием
  #3 (permalink)  
Старый 24.11.2013, 22:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

ShuggyBumblebee,
либо onclick присаивайте когда полностью перезаписали menu.innerHTML либо неиспользуйте innerHTML при изменении DOM
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<ul id="menu"></ul>
<script>
  function build(){
	var menu = document.getElementById('menu');
	for(var i = 0; i < 3; i++){
		menu.innerHTML +=  '<li><div class="button" id="item-'+ i + '">page</div></li>';

	  };
    	for(var i = 0; i < 3; i++){document.getElementById('item-'+ i).onclick = function(i) {
        		return function() { alert(i);}
		}(i);}
}
build();
</script>
</body>

</html>
Ответить с цитированием
  #4 (permalink)  
Старый 24.11.2013, 22:38
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

menu.innerHTML +=  '<li><div class="button" id="item-'+ i + '" onclick="alert('+ i + ')">page</div></li>';

но вообще-то ".innerHTML +=" это некрасиво. Есть же способы вставлять элементы в документ.
Ответить с цитированием
  #5 (permalink)  
Старый 24.11.2013, 22:44
Интересующийся
Отправить личное сообщение для ShuggyBumblebee Посмотреть профиль Найти все сообщения от ShuggyBumblebee
 
Регистрация: 24.11.2013
Сообщений: 20

как раз хотел спросить на счет граммотности) спасибо. Как правильнее?createElement("")?

Последний раз редактировалось ShuggyBumblebee, 24.11.2013 в 22:46.
Ответить с цитированием
  #6 (permalink)  
Старый 24.11.2013, 22:49
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от ShuggyBumblebee
Как правильнее?
http://javascript.ru/tutorial/dom/modify
http://javascript.ru/optimize/documentfragment-0

Последний раз редактировалось BETEPAH, 24.11.2013 в 22:53.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка формирования onclick в IE Pavel2012 Internet Explorer 2 23.11.2012 18:06
Отследить открытие ссылки само по себе, без onclick lancer Events/DOM/Window 28 19.11.2011 19:40
OnClick ячейки таблицы и ссылки в этой ячейке MasDen Javascript под браузер 2 30.06.2011 10:34
Как избавиться от каскадного onclick? GydruS Events/DOM/Window 2 24.02.2011 11:54
Событие onClick avtor01 Events/DOM/Window 3 03.09.2009 18:01