Скрытие всех элементов
Здравствуйте, скажите пожалуйста, можно ли на javascript
скрыть все элементы, ID`ы, которых, начинаются к примеру на show_ Допустим: <div id="show_1">...</div> <div id="show_2">...</div> <div id="show_3">...</div> <div id="show_4">...</div> <div id="show_5">...</div> <div id="show_6">...</div> |
Им можно присвоить класс
<div class="block">...</div> <div class="block">...</div> <div class="block">...</div> <div class="block">...</div> <div class="block">...</div> В стилях написать Код:
.hideblock .block { document.body.className = 'hideblock'; Это самое оптимальное решение. |
А если надо при это оставить один из них видимым?
Допустим скрыть все кроме show_4 |
Это уже совсем другой вопрос. И будет лучше, если вы все последующие тоже сразу изложите. Зря писать не больно охота.
В любом случае тупой метод в лоб вам поможет: перебрать в цикле все элементы и скрыть нужные. |
Пардон что сразу не сказал.
Перебрать в цикле - это понятно... Просто думал может другой способ есть. В любом случаи спасибо за ответы. |
Цитата:
|
Мне нужно скрыть все элементы, id`ы которых начинаются на show_, но при этом, оставить один из них видимым (допустим show_4)
Есессно разное кол-во элементов всегда. |
перебором
почитайте эту тему |
Спасибо. Буду разбираться.
|
А как быть с нерегулярными ID ?
Как поступить, если ID всех скрытых (да и видимых) div`ов имеет текстовые, понятные смысловые названия (ford, fiat, more, ogurets). Причем имена невидимых ID отличаются от предшествующих им лишь нижним прочерком,
т.е. видимая <a id='ogurets'...onclick=expand('_ogurets')>, невидимая соответственно div id='_ogurets'. Открывается функцией, в которой при onclick поочередно меняется document.getElementById(termin).style.display = 'block' и 'none' Это сделано для навигации внутри докумнета, а также при открывании ссылки в новом окне (используется hash), при этом в новом окне переходим на соответствующую метку и раскрываем следующий за ней блок, т.к. ID этого блока образуется путем прибавления нижнего прочерка к hash. Вопрос вот какой: как сделать, чтобы при onclick на странице развернуть/свернуть все ID, начинающиеся с нижнего прочерка? |
вам нужно такое, я так понимаю
pre_elem=document.getElementsByTagName('*');//замените * на конкретные теги, если они одинаковы.если нет, то остваьте как есть j=0; for(i=0;i<pre_elem.length;i++){ if(pre_elem[i].id[0]=='_'){ elem[j++]=pre_elem[i]; } } elem;//все элементы, чей ID начинается с '_' |
Цитата:
|
Большое спасибо, Gvozd.
To x-yuri: Не пробовал конечно, бесспорно удобно, тем более у меня в каждом раскр блоке помимо разных ID еще одинкаовый class стоИт. Просто есть небольшое опасение в корректности мультибраузерной работы, и в частности, чтобы class всегда переплевывал ID(когда некоторые ID уже развернуты). Но наверное этот вариант тоже должен подойти, на досуге попробую. Спасибо. |
Цитата:
Цитата:
|
Рапортую:
Способ document.body.className = 'hideblock'; в моем случае не подошел из-за сложности громоздкости наслоения вариантов сочетаний значений body class и локальных ID div-элементов (появилась необходимость при изменении body class одновременно менять значение ID div-элементов, в ином случае требовались повторные нажатия при открыть/скрыть конкретный div, т.е. в любом случае потребовался способ, предложенный Gvozd). Предложенный Gvozd способ в первоначальном виде работал в Opera и Firefox, но не работал в IE, поэтому потребовалось if(pre_elem[k].id[0]=='_') заменить на if(pre_elem[k].id.charAt(0) =='_') Сейчас работающий код выглядит так: var SHOF_key='none'; function SHOF(){ pre_elem=document.getElementsByTagName('div'); if (SHOF_key != 'block') SHOF_key = 'block'; else SHOF_key = 'none'; for(k=0;k<pre_elem.length;k++){ if(pre_elem[k].id.charAt(0) =='_'){ document.getElementById(pre_elem[k].id).style.display = SHOF_key; }}} Большое спасибо Gvozd и всем участвующим. |
Часовой пояс GMT +3, время: 20:56. |