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, время: 12:37. |