Сделать невидимый блок видимым

 
0
 
JavaScript
ava
arial | 15.11.2004, 18:01
<div style="display:none">Контент</div>
Как сделать этот блок видимым если браузер поддерживает javascript. Типа того:
<div id="block" style="display:none" onLoad="document.block.visibility='show'">Контент</div>
Поможите чем можете.
Kommentare (17)
ava
Sardar | 15.11.2004, 18:17 #
document.getElementById("block").style.display="block";

У слоя нет события onLoad, если нужно показать слой сразу после загрузки(зачем?), то попробуй поставить скриптовый вызов после кода слоя. Если в слое картинки, то придётся ждать пока они загрузятся. Это сделать просто. Только я в задачу не вьезжаю smile
ava
arial | 16.11.2004, 17:46 #
Цитата (Sardar @ 15.11.2004, 19:17)
Только я в задачу не вьезжаю smile

Всё просто. Если браузер не поддерживает javascript, блок с кнопками, работающими через javascript не будет виден. smile
ava
Alx | 16.11.2004, 17:58 #
поствь на body!


<body onload="document.getElementById('block').style.display='block';">
<div style="display:'none';">Содержание</div>
ava
arial | 16.11.2004, 19:01 #
А если скрываемых блоков несколько? Как их одной командой раскрыть?
ava
sergejzr | 16.11.2004, 19:09 #
В цикле каждый отдельно.
ava
Alx | 16.11.2004, 19:23 #

<html>
<head>
<script>
function opBlocks()
{for (var i=0;i<document.getElementById("jsBlocks").childNodes.length;i++)
document.getElementById("jsBlocks").childNodes[i].style.display = "block";
}
</script>
</head>
<body>
<body onload="opBlocks()">
<span id="jsBlocks">
<div style="display:'none';">Содержание</div>
<div style="display:'none';">Содержание</div>
<div style="display:'none';">Содержание</div>
<div style="display:'none';">Содержание</div>
</span>
</body>
</html>


работает везде (IE, Opera 5.12+, Mozilla, FireFox, Netscape)
;-)
ava
Sardar | 17.11.2004, 00:56 #
ALEXANDRO да!!! Это прогресс, наконец вижу код написанный согласно мировым стандартам, а не спецификациям от $MS :D

Одно замечание: в inline элементы(span) нельзя вставлять блоковые элементы(div), работать конечно будет, но их смысл теряется, да и у разных браузеров по разному башню сносить будет.

Задачу можно решить так:
<html>
function opBlocks(){
var els=document.getElmentsByTagName("DIV");
for (var i=0; i<els.length; i++)
if(els[i].getAttribute("jsprotected")) els[i].style.display="block"; ="";
}
...
<body onload="opBlocks()">
<div style="display:'none';" jsprotected>Содержание</div>
<div style="display:'none';" jsprotected>Содержание</div>
<div style="display:'none';" jsprotected>Содержание</div>
<div style="display:'none';" jsprotected>Содержание</div>
</body>
</html>

Или даже так:
<html>
function opBlocks(){
var els=document.getElmentsByName("jsprotected");
for (var i=0; i<els.length; i++) els[i].style.display="block"; ="";
}
...
<body onload="opBlocks()">
<div name="jsprotected" style="display:'none';">Содержание</div>
<div name="jsprotected" style="display:'none';">Содержание</div>
<div name="jsprotected" style="display:'none';">Содержание</div>
<div name="jsprotected" style="display:'none';">Содержание</div>
</body>
</html>
ava
Alx | 17.11.2004, 09:22 #
Sardar
1. что значит
els[i].style.display="block"; ="";
2. лучше наверное все-таки их по ID назвать и разными именами. (1, 2, 3 и т.д.) smile
ava
Sardar | 17.11.2004, 10:23 #
Цитата (ALEXANDRO @ 17.11.2004, 08:22)
1. что значит

а я там коментарий // ставил, как сейчас помню... во меня ночью проглючило smile

Цитата (ALEXANDRO @ 17.11.2004, 08:22)
2. лучше наверное все-таки их по ID назвать и разными именами. (1, 2, 3 и т.д.)

Тогд логики нет, у элементов должно быть что то общее на уровне языка/окружения, а не просто правило именования.
ava
Gold Dragon | 17.11.2004, 11:11 #
А у меня говорит что объект не поддерживается это свойство или метод здесь
var els=document.getElmentsByName("jsprotected");

später ergänzt:

Нашёл smile getElementsByName

А вообще, это правильно обзывать всё одним именем?
ava
Sardar | 17.11.2004, 13:37 #
Цитата (Red @ 17.11.2004, 10:11)
А вообще, это правильно обзывать всё одним именем?

Да, имя это "просто" аттрибут. Конечно возможны траблы с document.all который выбирает элементы по имени и ID, но от этих коллекций нужно отказатся.

А вообще жутко не хватает XPath, DOM(1-2) в том виде в котором он сейчас удобен для редакрирования нескольких нод. Для удобной работы он не очень годится. ПРосто делали платформо не зависимо, а так могли бы добавить функции для пробега по коллекция, работы со списком нод как с одной, оченьгибкие выборки XPath и в HTML.
ava
arial | 17.11.2004, 19:12 #
Неработает!
function opBlocks() {
var els = document.getElementByName('jsprotected');
for (var i = 0; i < els.length; i++) {
els[i].style.display = 'block';
}
}

<div name="jsprotected" style="display:none;">Содержание1</div>
ava
Alx | 17.11.2004, 19:46 #
замени в моём коде все div`ы на span`ы или наоборот.
ava
Sardar | 17.11.2004, 20:54 #
Цитата (arial @ 17.11.2004, 18:12)
var els = document.getElementByName('jsprotected');

Просто ты опечатался: var els = document.getElementsByName('jsprotected'); smile
ava
arial | 18.11.2004, 17:43 #
Я пробовал и getElement и getElements - не работает!
ava
sergejzr | 18.11.2004, 17:53 #
Возможно у тебя код обрабатывается раньше, чем загрузились сами элементы...
да, так и есть. функция вызывается onload, а боди ещё не загрузился smile... Попробуй просто перед </html> написать.
<script>opBlocks();</script>


Удачи!
Сергей.
ava
Sardar | 01.12.2004, 13:14 #
Добавлю: ИЕ глючно работает с getElementsByName, точнее он не выдает SPAN, DIV, P и прочие текстовые. Так можно выбирать элементы формы, картинки и прочие вставляемые элементы. Как говорится "сделанно через Ж."
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden