Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Скрыть внутренние дивы / 25 сообщений из 25, страница 1 из 1
20.01.2010, 21:26:02
    #36421523
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Есть див id="main". Внутри него еще несколько дивов.
CSS для "main":
#main div{
display="none";
}
Таким образом все внутренние дивы "главного" скрыты.
С помощью JS меняю свойство display для отдельных внутренних дивов.
А как прописать функцию, чтобы опять скрыть все внутренние дивы?
...
Рейтинг: 0 / 0
20.01.2010, 21:31:27
    #36421529
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Если внешнему прописать - все внутренние скроются.
...
Рейтинг: 0 / 0
20.01.2010, 21:35:22
    #36421535
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
ShSerge,
Внешний должен оставаться видимым.
...
Рейтинг: 0 / 0
20.01.2010, 21:41:52
    #36421545
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Alexei Gennadevich,

Вы не правильно написали. Так пишется:
Код: plaintext
1.
2.
3.
4.
5.
display:none;
/*
а не как у вас:
display="none";
*/
...
Рейтинг: 0 / 0
20.01.2010, 21:46:06
    #36421552
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
ShSergeAlexei Gennadevich,

Вы не правильно написали. Так пишется:
Код: plaintext
1.
2.
3.
4.
5.
display:none;
/*
а не как у вас:
display="none";
*/

Естественно, прошу прощения.

Так все таки как сделать, чтобы все внутренние дивы обрели свойство display="none" через JS?
...
Рейтинг: 0 / 0
21.01.2010, 09:18:06
    #36421946
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Alexei GennadevichТак все таки как сделать, чтобы все внутренние дивы обрели свойство display="none" через JS?
Присвоить им таки это значение.

Код: plaintext
[window.]document.getElementById("elementID").style.display='none'
...
Рейтинг: 0 / 0
21.01.2010, 10:46:40
    #36422119
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
как вариант подключить библиотеку jquery и
Код: plaintext
$('#main').children().css.display = 'none';
...
Рейтинг: 0 / 0
21.01.2010, 12:50:47
    #36422539
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
krvsaAlexei GennadevichТак все таки как сделать, чтобы все внутренние дивы обрели свойство display="none" через JS?
Присвоить им таки это значение.

Код: plaintext
[window.]document.getElementById("elementID").style.display='none'

так тока один элемент с id="elementID" станет невидимым...
Думаю надо получить по id внешний div и в цикле пройтись по его деткам-дивам и всем им проставить style.display='none'
...
Рейтинг: 0 / 0
21.01.2010, 13:03:01
    #36422585
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Ренаткак вариант подключить библиотеку jquery и
Код: plaintext
$('#main').children().css.display = 'none';


Данное решение натолкнуло меня на мысль, что надо поискать решение со свойством getElementById(), которое бы начиналось на child. И надо же!!! Есть такое!!! ChildNodes.

Так вот я сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<html>
<head>
<title> Попробуем </title> 

</head>

<script type="text/javascript">

	function hideDivs(){
		var innerDivs=document.getElementById("main").childNodes;
		for (var i= 1  ; innerDivs[i]; i+= 2 ) {
			innerDivs[i].style.display="none";
		}
		if(document.getElementById("main2").style.display!="none"){
			document.getElementById("main2").innerHTML="Отлично! Второй див не исчез!";
		}else{
			alert("Вот блин!!! Второй див тоже исчез(((((");
		}
	}

</script>

<body>
	<div id="main">
		<div id="inner1">Тут контент для первого дива</div>
		<div id="inner2"><a href="javascript:void(0)" onclick="hideDivs()">Тут контент для второго дива</a></div>
		<div id="inner3">Тут контент для третьего дива</div>
	</div>
	<div id="main2">Тут контент для второго главного дива. Посмотрим, будет ли он исчезать!</div>
</body>
</html>

Методами тыка и проб и ошибок написал цикл, который скрывает внутренние элементы главного дива. Только не могу понять, почему в цикле элементы i должны начинаться с 1 (i=1), а не с нуля? И почему прибавлять надо по 2 (i+=2), а не по 1 (i++)?
...
Рейтинг: 0 / 0
21.01.2010, 13:03:54
    #36422587
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
EmilRegis
Думаю надо получить по id внешний div и в цикле пройтись по его деткам-дивам и всем им проставить style.display='none'

Вот-вот. И я про тоже...
...
Рейтинг: 0 / 0
21.01.2010, 13:07:28
    #36422605
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
EmilRegisв цикле пройтись по его деткам-дивам и всем им проставить style.display='none'
Таки никто этого и не запрещал...
...
Рейтинг: 0 / 0
21.01.2010, 13:09:15
    #36422608
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Alexei Gennadevich , думаю лучше использовать getElementsByTagName - чтобы скрывались только внутренние дивы
...
Рейтинг: 0 / 0
21.01.2010, 13:10:19
    #36422612
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
krvsaEmilRegisв цикле пройтись по его деткам-дивам и всем им проставить style.display='none'
Таки никто этого и не запрещал...
Ну так с решением главной проблемы разобрались.
Но прокомментриуйте, пожалуйста, последний вопрос. Это так, для саморазвития.
...
Рейтинг: 0 / 0
21.01.2010, 13:10:44
    #36422614
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
хотя в данном случае детками являются только дивы, поэтому для данного случая можно и так
...
Рейтинг: 0 / 0
21.01.2010, 13:17:33
    #36422635
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
EmilRegisAlexei Gennadevich , думаю лучше использовать getElementsByTagName - чтобы скрывались только внутренние дивы

Так?
Код: plaintext
1.
2.
3.
4.
var innerDivs=document.getElementById("main").getElementsByTagName("div");
for (var i= 0  ; innerDivs[i]; i++) {
	innerDivs[i].style.display="none";
}

В принципе работает. И такой вариант мне нравится больше. Всем спасибо!
...
Рейтинг: 0 / 0
21.01.2010, 13:59:03
    #36422787
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Alexei Gennadevichдля саморазвития.
Воизбежании вмешательства "случая", я бы сделал "составные" ИДшники и крутил цикл по ним...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
var all= 3 
for (var i= 1  ; all; i++) {
	document.getElementById("inner"+i).style.display="none";
}
...
<div id="main">
	<div id="inner1">Тут контент для первого дива</div>
	<div id="inner2"><a href="javascript:void(0)" onclick="hideDivs()">Тут контент для второго дива</a></div>
	<div id="inner3">Тут контент для третьего дива</div>
</div>
...
Рейтинг: 0 / 0
21.01.2010, 14:00:34
    #36422798
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Alexei GennadevichТолько не могу понять, почему в цикле элементы i должны начинаться с 1 (i=1), а не с нуля? И почему прибавлять надо по 2 (i+=2), а не по 1 (i++)?
Как вариант начать таки цыкл с 0 и посмотреть чему равен innerHTML у получаемых элементов...
...
Рейтинг: 0 / 0
21.01.2010, 14:08:22
    #36422833
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Код: plaintext
1.
2.
3.
4.
5.
var all= 3 
for (var i= 1  ; all; i++) {
	document.getElementById("inner"+i).style.display="none";
}

а такой for рабоает?)
...
Рейтинг: 0 / 0
21.01.2010, 14:10:32
    #36422845
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
EmilRegisа такой for рабоает?)
Не работает разве?

Для интереса проверил так...

Код: plaintext
1.
2.
3.
4.
5.
6.
function hideDivs(){
	var innerDivs=document.getElementById("main").childNodes;
	for (i in innerDivs) {
		innerDivs[i].innerHTML=i;
	}
}
...
Рейтинг: 0 / 0
21.01.2010, 14:15:31
    #36422876
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
да нет, я просто думал обязательно вторым аттрибутом цикла указывать условие типа
Код: plaintext
1.
2.
var all= 3 
for (var i= 1  ; i<all; i++)
вот и спросил работает ли так
Код: plaintext
1.
2.
var all= 3 
for (var i= 1  ; all; i++)
А то может действительно можно так писать, типа сокращая)
...
Рейтинг: 0 / 0
21.01.2010, 14:25:04
    #36422911
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
EmilRegisя просто думал обязательно вторым аттрибутом цикла указывать условие
Ааа! Понял. Работоть-то оно работает но до первой ошибки "Нужен объект"...
Т.ч. поправлюсь

Код: plaintext
1.
2.
3.
4.
5.
function hideDivs(){
	var all= 3 
	for (var i= 1  ; i<=all; i++) {
		document.getElementById("inner"+i).style.display="none";
	}
}
...
Рейтинг: 0 / 0
21.01.2010, 14:27:30
    #36422920
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
krvsaAlexei Gennadevichдля саморазвития.
Воизбежании вмешательства "случая", я бы сделал "составные" ИДшники и крутил цикл по ним...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
var all= 3 
for (var i= 1  ; all; i++) {
	document.getElementById("inner"+i).style.display="none";
}
...
<div id="main">
	<div id="inner1">Тут контент для первого дива</div>
	<div id="inner2"><a href="javascript:void(0)" onclick="hideDivs()">Тут контент для второго дива</a></div>
	<div id="inner3">Тут контент для третьего дива</div>
</div>


К сожалению, такой вариант не подходит, так как количество внутренних дивов не постоянно. Передавать их количество в качестве переменной в каждом конкретном случае не хотелось бы (тем более, что в разобранных решениях можно обойтись и без этого). А во-вторых, названия дивов типа "inner1", "inner2" и тд. (короче "inner"+i) были предоставлены условно, так сказать для примера. В реальном случае их названия полностью текстовые.

krvsa,

В любом случае огромное спасибо за помощь!
...
Рейтинг: 0 / 0
22.01.2010, 00:37:17
    #36424090
breathem
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Ренаткак вариант подключить библиотеку jquery и
Код: plaintext
$('#main').children().css.display = 'none';


Ээээх... Будьте внимательнее.
Чтобы получить стиль: $("selector").css("display");
Чтобы назначить стиль: $("selector").css("display","none");
...
Рейтинг: 0 / 0
22.01.2010, 17:26:09
    #36425920
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
breathemРенаткак вариант подключить библиотеку jquery и
Код: plaintext
$('#main').children().css.display = 'none';


Ээээх... Будьте внимательнее.
Чтобы получить стиль: $("selector").css("display");
Чтобы назначить стиль: $("selector").css("display","none");
JQuery уже пол года в "руках не держал", все на чистом Javascript на работе делаем)
...
Рейтинг: 0 / 0
22.01.2010, 19:19:31
    #36426141
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть внутренние дивы
Ренат...все на чистом Javascript на работе делаем...
+1
Вот же ёлки-палки, жквери включили в аспнет. Хотя, мне бы не хотелось.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Скрыть внутренние дивы / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]