Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   getElementsByClassName (https://javascript.ru/forum/events/8731-getelementsbyclassname.html)

denisok82 11.04.2010 21:53

Gozar,
нет, еще не слышал. я же только учусь.
Точнее слышал, но не пробовал еще использовать.

Gozar 11.04.2010 22:18

<html>
<head>

<script type="text/javascript">
 function find(hidden_id) {
   var f = document.getElementById('layer').childNodes;
     for (var i=0; i<f.length; i++){
	    if(f[i].className == hidden_id){
               f[i].style.visibility = "hidden";
            }
            else{
               f[i].style.visibility = "visible";
            }
     }
}
</script>

</head>
<body>
  <input id="but1" type="button" value="Убрать 1" onclick="find('c1')" />
  <input id="but2" type="button" value="Убрать 2" onclick="find('c2')" />
  <input id="but3" type="button" value="Убрать 3" onclick="find('c3')" />
  <input id="but4" type="button" value="Убрать 4" onclick="find('c4')" />
  
<div id="layer" style="padding-top: 20px; padding-left: 40px;"><p class="c1">100</p><p class="c2">110</p><p class="c3">120</p><p class="c4">130</p><p class="c1">140</p><p class="c2">150</p><p class="c3">160</p><p class="c4">170</p></div>

</body>
</html>


Мне честно говоря очень лень разбираться, но если я правильно понял что должно делаться, то так это делать намного проще. Этот способ будет работать только если между </p><p class= не будет пробелов или других символов иначе childNodes (f[i]) нужно проверять на <p>

denisok82 11.04.2010 22:21

Gozar,
Да, вы всё правильно поняли. Спасибо большое за помощь!

denisok82 11.04.2010 22:26

Цитата:

Сообщение от Gozar (Сообщение 51210)
Этот способ будет работать только если между </p><p class= не будет пробелов или других символов иначе childNodes (f[i]) нужно проверять на <p>

А вот это уже неприятность.
Будем искать.

Gozar 11.04.2010 22:51

Цитата:

Сообщение от denisok82 (Сообщение 51214)
А вот это уже неприятность.
Будем искать.

Это не неприятность, нужно просто проверять если перебираемый элемент p то сравнивать className, если нет то просто перебираем дальше. В общем изучайте методы работы с DOM.

B~Vladi 11.04.2010 22:52

Цитата:

Сообщение от Gozar

:)

denisok82 11.04.2010 22:53

Gozar,
B~Vladi,
Спасибо :) Буду постигать.

denisok82 14.04.2010 22:42

Подскажите пожалуйста, как сделать, чтобы оба свойства изменялись, а не только одно первое?
for (var i=0; i<f1.length; i++)
	     f1[i].style.fontWeight = "bolder";
		 f1[i].style.color = "#ff0000";

Получается только вводя цикл со второй переменной. А сразу как-то можно оба свойства изменить?

Kolyaj 14.04.2010 23:06

Фигурные скобки забыли.

denisok82 14.04.2010 23:10

спасибо :thanks:

И я всё еще не понял, можно ли создавать такие глобальные переменные или нет?
<script type="text/javascript">
   var f1 = document.getElementById('layer').getElementsByClassName('c1');
   var f2 = document.getElementById('layer').getElementsByClassName('c2');
   var f3 = document.getElementById('layer').getElementsByClassName('c3');
   var f4 = document.getElementById('layer').getElementsByClassName('c4');
 function find_c1() {
   for (var i=0; i<f1.length; i++)
         f1[i].style.visibility = "hidden";
   for (var i=0; i<f2.length; i++)
         f2[i].style.visibility = "visible";
   for (var i=0; i<f3.length; i++)
         f3[i].style.visibility = "visible";
   for (var i=0; i<f4.length; i++)
         f4[i].style.visibility = "visible";
   }
</script>


Часовой пояс GMT +3, время: 21:54.