Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   onclick привязка ф-ции (https://javascript.ru/forum/misc/43159-onclick-privyazka-f-cii.html)

ShuggyBumblebee 24.11.2013 21:55

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:22

тоже самое

рони 24.11.2013 22:34

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>

BETEPAH 24.11.2013 22:38

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

но вообще-то ".innerHTML +=" это некрасиво. Есть же способы вставлять элементы в документ.

ShuggyBumblebee 24.11.2013 22:44

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

BETEPAH 24.11.2013 22:49

Цитата:

Сообщение от ShuggyBumblebee
Как правильнее?

http://javascript.ru/tutorial/dom/modify
http://javascript.ru/optimize/documentfragment-0


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