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

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

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

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

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

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

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

так тока один элемент с id="elementID" станет невидимым...
Думаю надо получить по id внешний div и в цикле пройтись по его деткам-дивам и всем им проставить style.display='none'
...
Рейтинг: 0 / 0
Скрыть внутренние дивы
    #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
Скрыть внутренние дивы
    #36422587
Alexei Gennadevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EmilRegis
Думаю надо получить по id внешний div и в цикле пройтись по его деткам-дивам и всем им проставить style.display='none'

Вот-вот. И я про тоже...
...
Рейтинг: 0 / 0
Скрыть внутренние дивы
    #36422605
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EmilRegisв цикле пройтись по его деткам-дивам и всем им проставить style.display='none'
Таки никто этого и не запрещал...
...
Рейтинг: 0 / 0
Скрыть внутренние дивы
    #36422608
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei Gennadevich , думаю лучше использовать getElementsByTagName - чтобы скрывались только внутренние дивы
...
Рейтинг: 0 / 0
Скрыть внутренние дивы
    #36422612
Alexei Gennadevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaEmilRegisв цикле пройтись по его деткам-дивам и всем им проставить style.display='none'
Таки никто этого и не запрещал...
Ну так с решением главной проблемы разобрались.
Но прокомментриуйте, пожалуйста, последний вопрос. Это так, для саморазвития.
...
Рейтинг: 0 / 0
Скрыть внутренние дивы
    #36422614
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя в данном случае детками являются только дивы, поэтому для данного случая можно и так
...
Рейтинг: 0 / 0
Скрыть внутренние дивы
    #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
Скрыть внутренние дивы
    #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
Скрыть внутренние дивы
    #36422798
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexei GennadevichТолько не могу понять, почему в цикле элементы i должны начинаться с 1 (i=1), а не с нуля? И почему прибавлять надо по 2 (i+=2), а не по 1 (i++)?
Как вариант начать таки цыкл с 0 и посмотреть чему равен innerHTML у получаемых элементов...
...
Рейтинг: 0 / 0
Скрыть внутренние дивы
    #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
Скрыть внутренние дивы
    #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
Скрыть внутренние дивы
    #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
Скрыть внутренние дивы
    #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
Скрыть внутренние дивы
    #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
Скрыть внутренние дивы
    #36424090
breathem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренаткак вариант подключить библиотеку jquery и
Код: plaintext
$('#main').children().css.display = 'none';


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


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


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