много <div> а скрипт один
вопрос такой:
есть много элементов <div id = 'name'></div> :
<div id = 'name'></div>
<div id = 'name'></div>
<div id = 'name'></div>
<div id = 'name'></div>
......
<div id = 'name'></div>
<button id = 'but'>Click me</button>
есть скрипт:
var but = document.getElementById('but');
var elem = document.getElementById('name');
//убирает элемент <div id= 'name'></div>
var hid = function() { elem.style.display = 'none'; }
but.addEventListener('click',hid,false);
Вопрос: Почему убирается только первый элемент <div id= 'name'></div> |
Потому что айди, он на то и айди, чтобы быть уникальным!
|
Вот костыль
document.getElementById('but').addEventListener('click', function( e ) {
var elem = (e && e.target || event.srcElement || document).previousSibling;
for( ;elem; elem = elem.previousSibling ) {
if ( elem.id == "name" ) {
elem.style.display = "none"
}
}
}, false);
|
<div id="name">1</div>
<div id="name">2</div>
<div id="name">3</div>
<div id="name">4</div>
<div id="name">5</div>
<button id = 'but'>Click me</button>
<script type="text/javascript">
var but = document.getElementById('but');
var elem = document.querySelectorAll('[id="name"]');
//убирает элемент <div id= 'name'></div>
var hid = function() {
for(var i = 0; elem[ i ]; i++ ) {
elem[ i ].style.display = 'none';
}
}
but.addEventListener('click',hid,false);
</script>
|
Зачем человеку советовать костыли ? что бы он всегда так делала потом ?
Что мешает его направить на правильный путь ? К примеру сказать что бы использовал класс вместо ИД ? |
id должен быть уникальным! Используй class.
<div class='name'></div> <div class='name'></div> <div class='name'></div> <div class='name'></div> … <div class='name'></div>
var c = document.getElementsByClassName('name');
for (var i=0; i<c.length; i++) {
c[i].style.display = 'none';
}
Вроде так. |
Цитата:
Тут придётся реализовать новый метод с таким же именем (в инете таких примеров навалом) но недостаток метода в том, что он перебирает все элементы DOM в поисках элемента с нужным классом, а это всё таки время.. Может лучше делать такую штуку с указанием на родителя, если он известен? Что скажут на эту тему профи? Или это уже параноя? ))) |
Цитата:
|
Цитата:
Никак не мог сформулировать по причине нубизма)) Но чуял всё правильно :) |
спасибо всем кто написал, но после слов триви уже все понял=)
|
| Часовой пояс GMT +3, время: 19:10. |