Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Закрыть все окна
Форумы портала PHP.SU » » Вопросы новичков » Закрыть все окна

Страниц (1): [1]
 

1. aleks3130 - 27 Февраля, 2013 - 09:25:44 - перейти к сообщению
<div class="okno" id="d1"></div>
<div class="okno" id="d2"></div>
<div class="okno" id="d3"></div>
итд

CSS
.okno{display: block}


Как сделать у всех окон display: none;

Окон может быть очень много.


Заранее спасибо
2. avtor.fox - 27 Февраля, 2013 - 09:28:13 - перейти к сообщению
Однако
3. aleks3130 - 27 Февраля, 2013 - 09:37:50 - перейти к сообщению
avtor.fox пишет: Однако



У меня сейчас реализовано так

document.getElementById('d1').style.display="none";
document.getElementById('d2').style.display="none";
document.getElementById('d3').style.display="none";



как сделать через класс CSS не знаю

подскажите
4. avtor.fox - 27 Февраля, 2013 - 09:40:44 - перейти к сообщению
avtor.fox пишет: Однако

Однако
5. aleks3130 - 27 Февраля, 2013 - 09:44:57 - перейти к сообщению
avtor.fox пишет:
avtor.fox пишет: Однако

Однако


Меня интересует как это сделать через javascript
6. avtor.fox - 27 Февраля, 2013 - 09:45:27 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. window.onload = function(){
  2.         var cl = 'new', // ClassName
  3.         a = document.getElementsByTagName('body')[0].getElementsByTagName('*')
  4.         for(var i=0;i<a.length;i++){
  5.                 if(a[i].className == cl){
  6.                         a[i].style.display = 'none'
  7.                 }
  8.         }
  9. }
7. DeepVarvar - 27 Февраля, 2013 - 10:06:36 - перейти к сообщению
avtor.fox пишет:
a[i].className == cl
Не прокатит для элементов, котоые содержать более одного класса (class="a b c"):
CODE (javascript):
скопировать код в буфер обмена
  1. function hasClass(elem, classname) {
  2.   return (!elem.className) ? false :
  3.     elem.className.match(new RegExp('(\\s|^)' + classname + '(\\s|$)'));
  4. }
8. avtor.fox - 27 Февраля, 2013 - 10:13:42 - перейти к сообщению
DeepVarvar, я только учусь. Спасибо Закатив глазки
9. DeepVarvar - 27 Февраля, 2013 - 11:13:47 - перейти к сообщению
avtor.fox пишет:
только учусь
Тогда продолжим еще.
Для тех элементов, св-ва которых не требуется проверять через hasOwnProperty, вполне прокатит in-синтаксис в цикле:
CODE (javascript):
скопировать код в буфер обмена
  1. function hasClass(elem, classname) {
  2.   return (!elem.className) ? false :
  3.     elem.className.match(new RegExp('(\\s|^)' + classname + '(\\s|$)'));
  4. }
  5. window.onload = function(){
  6.   var cl = 'new', // ClassName
  7.   a = document.getElementsByTagName('body')[0].getElementsByTagName('*');
  8.   for(var i in a){
  9.     if(hasClass(a[i],  cl)){
  10.       a[i].style.display = 'none';
  11.     }
  12.   }
  13. }


И еще - всегда ставьте точку с запятой в конце "предложения", бывает так, что синтаксис становится неявным даже для js-движка.
10. avtor.fox - 27 Февраля, 2013 - 11:47:34 - перейти к сообщению
DeepVarvar пишет:
for(var i in a)

Ага, пробег по элементам объекта. Не знал что синтаксис for позволяет такое.

DeepVarvar пишет:
И еще - всегда ставьте точку с запятой в конце "предложения", бывает так, что синтаксис становится неявным даже для js-движка.

Всегда нравилось "наплевательское" отношение js к закрытию строк. Спасибо.

Я позабыл что элемент может содержать в себе более одного класса и при обращении к нему (атрибуту) он возвращает строку. Промазал я)

 

Powered by ExBB FM 1.0 RC1