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,
либо 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>
|
menu.innerHTML += '<li><div class="button" id="item-'+ i + '" onclick="alert('+ i + ')">page</div></li>';
но вообще-то ".innerHTML +=" это некрасиво. Есть же способы вставлять элементы в документ. |
как раз хотел спросить на счет граммотности) спасибо. Как правильнее?createElement("")?
|
Цитата:
http://javascript.ru/optimize/documentfragment-0 |
| Часовой пояс GMT +3, время: 17:07. |