Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подключение нескольких document.getElementById (https://javascript.ru/forum/events/11054-podklyuchenie-neskolkikh-document-getelementbyid.html)

Avel Mink 04.08.2010 15:12

Подключение нескольких document.getElementById
 
Проблема состоит в том, что мне надо чтобы при нажатии на ссылку изменялся параметр стиля сразу у нескольких блоков. Если проще, то есть такой код:
<div onclick="document.getElementById('opro').style.display = 'none'; document.getElementById('ast').style.display = 'none'; document.getElementById('qwe').style.display = 'none'; и т.д. ">


мне всего лишь надо объединить эти функции в одну, потому что если добавить еще парочку таких, то почему то перестают действовать последние из них. Решение через for со счетчиком не подходит, нужно именно указывать разные id блоков(их всего будет 5-10 штук). Заранее спасибо за помощь

Gvozd 04.08.2010 15:40

div_element.onclick=function(){
document.getElementById('opro').style.display = 'none'; document.getElementById('ast').style.display = 'none'; document.getElementById('qwe').style.display = 'none'; и т.д. 
}

PS http://javascript.ru/tutorial/events

JsLoveR 04.08.2010 15:40

Avel Mink, ну как пример:

function changeStyle()
{
    for(var i=0;i<2;i++)
    {
        document.getElementById("div"+i).style.display = 'none';
    }
}

соответственно имена у дивов с id="div0" и id="div1"

chippolino 04.08.2010 15:46

<script type="text/javascript">
	window.onload=(function(){
		function $(a){return document.getElementById(a);}
		$('d1').onclick=(function(){
			ID=['d2','d3','d4'];
			for(k in ID){
				$(ID[k]).style.display='none';
			}
		});	
	});
</script>
<div id="d1">click</div>
<div id="d2">1</div>
<div id="d3">1</div>
<div id="d4">1</div>

Gvozd 04.08.2010 15:52

chippolino,
это не раздел по какому-либо фреймворку.
для них есть отдельный раздел.

chippolino 04.08.2010 15:58

Gvozd, а где ты тут видишь "какой-либо фреймворк"???

JsLoveR 04.08.2010 16:04

chippolino, на первый взгляд код похож на jquery, а у Вас просто функция с именем $, которая возвращает ссылку на элемент)

Avel Mink 04.08.2010 16:06

Цитата:

Сообщение от chippolino (Сообщение 66263)
<script type="text/javascript">
	window.onload=(function(){
		function $(a){return document.getElementById(a);}
		$('d1').onclick=(function(){
			ID=['d2','d3','d4'];
			for(k in ID){
				$(ID[k]).style.display='none';
			}
		});	
	});
</script>
<div id="d1">click</div>
<div id="d2">1</div>
<div id="d3">1</div>
<div id="d4">1</div>

Твой вариант мне подходит больше всего, но как сделать чтобы при нажатии на любой из блоков закрывались все остальные кроме него. То есть не было вот этой привязки по id
... $('d1').onclick ...
. Спасибо

Gvozd 04.08.2010 16:18

Цитата:

Сообщение от Avel Mink
как сделать чтобы при нажатии на любой из блоков закрывались все остальные кроме него. То есть не было вот этой привязки по id

с этого и надо было начинать
вы не стой стороны начали решать задачу
fucntion func(elem){
    var elems=...//список всех div-ов
    for(i=0;i<elems.length;i++){
        if(elems[i]!=elem)
            ...//скрываем элемент
    }
}

<div onclick="func(this)"></div>

Avel Mink 04.08.2010 16:23

если можно напишите примеры, что должно быть тут
... var elems=...//список всех div-ов ...

и тут
...//скрываем элемент ...

потому что я не разбираюсь в javascript. Спасибо


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