Javascript.RU

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

много <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>
Ответить с цитированием
  #2 (permalink)  
Старый 13.09.2011, 12:50
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Потому что айди, он на то и айди, чтобы быть уникальным!
Ответить с цитированием
  #3 (permalink)  
Старый 13.09.2011, 15:13
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Вот костыль
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);
Ответить с цитированием
  #4 (permalink)  
Старый 13.09.2011, 16:02
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<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>
Ответить с цитированием
  #5 (permalink)  
Старый 13.09.2011, 17:06
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Зачем человеку советовать костыли ? что бы он всегда так делала потом ?
Что мешает его направить на правильный путь ? К примеру сказать что бы использовал класс вместо ИД ?
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 13.09.2011 в 17:31.
Ответить с цитированием
  #6 (permalink)  
Старый 13.09.2011, 22:50
Аватар для unclechu
Интересующийся
Отправить личное сообщение для unclechu Посмотреть профиль Найти все сообщения от unclechu
 
Регистрация: 12.09.2011
Сообщений: 14

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';
}


Вроде так.
Ответить с цитированием
  #7 (permalink)  
Старый 13.09.2011, 23:38
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Сообщение от unclechu Посмотреть сообщение
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';
}


Вроде так.
В IE getElementsByClassName работать не будет, потому что его там нет.
Тут придётся реализовать новый метод с таким же именем
(в инете таких примеров навалом)
но недостаток метода в том, что он перебирает все элементы DOM
в поисках элемента с нужным классом, а это всё таки время..

Может лучше делать такую штуку с указанием на родителя, если он известен?
Что скажут на эту тему профи?
Или это уже параноя? )))
Ответить с цитированием
  #8 (permalink)  
Старый 13.09.2011, 23:56
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Сообщение от Триви
Может лучше делать такую штуку с указанием на родителя, если он известен?
Что скажут на эту тему профи?
Или это уже параноя? )))
так это и делается, все правильно, указывается контекст для поиска, если известен. например, http://javascript.ru/unsorted/top-10...lementsbyclass
Ответить с цитированием
  #9 (permalink)  
Старый 14.09.2011, 00:01
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Сообщение от ваый Посмотреть сообщение
контекст для поиска
Вот они правильные слова!
Никак не мог сформулировать по причине нубизма))
Но чуял всё правильно
Ответить с цитированием
  #10 (permalink)  
Старый 17.09.2011, 18:11
Новичок на форуме
Отправить личное сообщение для DimaRogov Посмотреть профиль Найти все сообщения от DimaRogov
 
Регистрация: 13.09.2011
Сообщений: 6

спасибо всем кто написал, но после слов триви уже все понял=)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чудеса математики js при padding borovik Элементы интерфейса 6 09.07.2011 22:02
Как украсть скрипт? bayah Общие вопросы Javascript 6 26.04.2010 10:32
Почему не загружается скрипт? prog90 Я не знаю javascript 14 11.06.2009 11:52
А как зделать скрипт, чтобы например скрипт 1 заменялся скриптом 2? yura371 Общие вопросы Javascript 3 06.01.2009 22:40
добавление окошка в скрипт подсчета слов Гость Общие вопросы Javascript 10 11.03.2008 17:07