Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос по коду Java script (выводит динамический список)
 
 автор: Romanych   (08.03.2016 в 01:50)   письмо автору
 
 

Приветствую всех и прошу помощи так как джава скрипты не знаю, но есть необходимость в размещении следующего кода на сайте.

Вот код который строит динамический список из 3 select ов:


<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
<meta charset="windows-1251">
</head>

<body>
<style>
.div2 {
 display: none ;
}
</style>
<style>
.div3 {
 display: none ;
}
</style>
<select onchange="change(this.value);">
<option value=1 selected>Выбирите</option>
<option value=2>2</option>
<option value=3>3</option>

</select>
<div class="div1">Ни чего не выбрано</div>
<div class="div2">2</div>
<div class="div3">3</div>

<script>
var divs = document.querySelectorAll(".div1, .div2, .div3") ;
function change(i) {
 var nodeList = divs,
 l = nodeList.length ;
 while(l--)
 nodeList[l].style.display = "none" ;
 nodeList = document.querySelectorAll(".div"+i) ;
 l = nodeList.length ;
 while(l--)
  nodeList[l].style.display = "block" ;
} ;
</script>

</body>

</html>


Вопрос: Что нужно поменять в коде скрипта, чтоб была возможность корректного вывода более 3-ех селектов? Допустим 5-ти.

Жду ответа. Буду очень благодарен за подсказку!

  Ответить  
 
 автор: elenaki   (08.03.2016 в 10:30)   письмо автору
 
   для: Romanych   (08.03.2016 в 01:50)
 

дописать в nodeList сколько надо еще селектов?

  Ответить  
 
 автор: Romanych   (08.03.2016 в 10:35)   письмо автору
 
   для: elenaki   (08.03.2016 в 10:30)
 

Подскажите в какую именно строку. А если можно пример.

Сюда?
nodeList = document.querySelectorAll(".div"+i) ; 


Что именно?

  Ответить  
 
 автор: elenaki   (08.03.2016 в 13:49)   письмо автору
 
   для: Romanych   (08.03.2016 в 10:35)
 

var divs = document.querySelectorAll(".div1, .div2, .div3, .div4, .div5") ; 


не проверяла

  Ответить  
 
 автор: Romanych   (08.03.2016 в 14:32)   письмо автору
2.7 Кб
 
   для: elenaki   (08.03.2016 в 13:49)
 

Этого не достаточно. Это я уже делал. Проблема в том что если мы прописываем дополнительные дивы, то 4 и 5 блоки (дивы) видны сразу же после загрузки, а они должны быть видны при выборе соответствующего пункта из списка, т.е. при выборе 1 - виден только div1, при выборе 2 - виден только div2 и т.п.

Сам скрипт изначально был создан для варианта со списком из трех пунктов, соответственно и 3-ех дивов. В настоящее время есть необходимость создавать списки из более чем трех элементов, это может быть и 5 и 25-ть, в разных случаях по разному. И сам не могу разобраться что именно в скрипте отвечает за корректное отображение блоков и что нужно изменять в коде java с увеличением числа пунктов в списке.

в прикрепленном файле пример работы скрипта со списком из 5 пунктов и соответственно и 5 блоков. Из него видно что блоки 4,5 видны сразу после загрузки, хотя в списке выбран его первый элемент.

Вот код результат работы которого на скриншоте:

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
<meta charset="windows-1251">
</head>

<body>
<style>
.div2 {
 display: none ;
}
</style>
<style>
.div3 {
 display: none ;
}
</style>
<select onchange="change(this.value);">
<option value=1 selected>Выбирите</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
</select>
<div class="div1">Ни чего не выбрано</div>
<div class="div2">2</div>
<div class="div3">3</div>
<div class="div4">4</div>
<div class="div5">5</div>
<script>
var divs = document.querySelectorAll(".div1, .div2, .div3, .div4, .div5") ;
function change(i) {
 var nodeList = divs,
 l = nodeList.length ;
 while(l--)
 nodeList[l].style.display = "none" ;
 nodeList = document.querySelectorAll(".div"+i, ".div"+i, ".div"+i, ".div"+i, ".div"+i) ;
 l = nodeList.length ;
 while(l--)
  nodeList[l].style.display = "block" ;
} ;
</script>

</body></html>




Ааааа... все разобрался сам!! Нужно стили под каждый блок выставить было display: none ;

Спасибо что откликнулись!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования