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

HTML+CSS+JavaScript

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

 

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

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

тема: Select multiple и div style="display: none"
 
 автор: gOFREe   (08.09.2011 в 16:02)   письмо автору
 
 

Здравтсвуйте! Помогите пожалуйста разобраться.
Есть multiple select при выборе значения появляется div.
Если выбрано несколько значений, то открыто соответственно несколько дивов.
Если значение не выбрано или с него сняли выделение, то див невидимый.
Сколько позиций в select заранее не известно.
Спасибо!


 function sendReq (x)
{
document.getElementById("scnd"+x).style.display =  "inline"; 
}


<select name="razdel[]" multiple onchange="sendReq (this.value)">
<option value="1">Фрукты</option>
<option value="2">Орехи</option>
<option value="3">Овощи</option>
...
</select>

<div id="scnd1" style="display: none;">Яблоки</div>
<div id="scnd2" style="display: none;">Грецкий</div>
<div id="scnd3" style="display: none;">Помидоры</div>

  Ответить  
 
 автор: LEM   (08.09.2011 в 16:10)   письмо автору
 
   для: gOFREe   (08.09.2011 в 16:02)
 

Здарова!

 function sendReq (x) 

    var act = document.getElementById("scnd"+x).style.display ;
   if (act == "inline")
    {
       act = "none";
    }
   else
   {
       act = "inline";
   }  



<select name="razdel[]" multiple onchange="sendReq (this.value)"> 
<option value="1">Фрукты</option> 
<option value="2">Орехи</option> 
<option value="3">Овощи</option> 
... 
</select> 

<div id="scnd1" style="display: none;">Яблоки</div> 
<div id="scnd2" style="display: none;">Грецкий</div> 
<div id="scnd3" style="display: none;">Помидоры</div>


Я в js 0 но думаю так надо делать :)

  Ответить  
 
 автор: gOFREe   (08.09.2011 в 17:52)   письмо автору
 
   для: LEM   (08.09.2011 в 16:10)
 

не работает (
Пробовал разные варианты с этим смыслом.

  Ответить  
 
 автор: gOFREe   (08.09.2011 в 21:06)   письмо автору
 
   для: gOFREe   (08.09.2011 в 17:52)
 

Новые мысли, но что то опять не так.. не работает.

function sendReq (val)
{
    for (var i = 0; i < val.length; i++) {
        if (val[i] == val) {
               document.getElementById("scnd"+val).style.display = "inline";
            } else {
                document.getElementById("scnd"+val).style.display = "none";
            }
        
    }
}


<select name="razdel[]" id="fm" multiple onchange="sendReq (this)">
<option value="1">Фрукты</option>
<option value="2">Орехи</option>
<option value="3">Овощи</option>
...
</select>

<div id="scnd1" style="display: none;">Яблоки</div>
<div id="scnd2" style="display: none;">Грецкий</div>
<div id="scnd3" style="display: none;">Помидоры</div>

  Ответить  
 
 автор: Scrum   (08.09.2011 в 21:42)   письмо автору
 
   для: gOFREe   (08.09.2011 в 21:06)
 

Вроде как так.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>
  <title></title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <script type="text/javascript">
function sendReq (obj)
{
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].selected) {
                document.getElementById("scnd"+(i+1)).style.display = "inline";
            } else {
               document.getElementById("scnd"+(i+1)).style.display = "none";
            }

    }
}
  </script>
</head>

<body>
<select name="razdel[]" multiple onclick="sendReq(this)">
<option value="1">Фрукты</option>
<option value="2">Орехи</option>
<option value="3">Овощи</option>
</select>
<div id="scnd1" style="display: none;">Фрукты</div>
<div id="scnd2" style="display: none;">Орехи</div>
<div id="scnd3" style="display: none;">Овощи</div>
</body>

</html>

  Ответить  
 
 автор: gOFREe   (08.09.2011 в 22:00)   письмо автору
 
   для: Scrum   (08.09.2011 в 21:42)
 

Спасибо огромное!
А как поступить если value значения идут в разнобой? ;)

<select name="razdel[]" multiple onclick="sendReq(this)">
<option value="3">Фрукты</option>
<option value="7">Орехи</option>
<option value="9">Овощи</option>
</select>

  Ответить  
 
 автор: gOFREe   (08.09.2011 в 22:05)   письмо автору
 
   для: gOFREe   (08.09.2011 в 22:00)
 

Во, попрвил.
Спасибо!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>
  <title></title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <script type="text/javascript">
function sendReq (obj)
{
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].selected) {
                document.getElementById("scnd"+obj[i].value).style.display = "inline";
            } else {
               document.getElementById("scnd"+obj[i].value).style.display = "none";
            }

    }
}
  </script>
</head>

<body>
<select name="razdel[]" multiple onclick="sendReq(this)">
<option value="1">Фрукты</option>
<option value="2">Орехи</option>
<option value="3">Овощи</option>
</select>
<div id="scnd1" style="display: none;">Фрукты</div>
<div id="scnd2" style="display: none;">Орехи</div>
<div id="scnd3" style="display: none;">Овощи</div>
</body>

</html> 

  Ответить  
 
 автор: gOFREe   (08.09.2011 в 22:34)   письмо автору
 
   для: gOFREe   (08.09.2011 в 22:05)
 

Не пойму еще одну вещь, почему если отсутствует например <div id="scnd2" style="display: none;">Орехи</div> , то если я в селекте выбираю после значения 2, то уже ничего не выводится

  Ответить  
 
 автор: Scrum   (08.09.2011 в 22:46)   письмо автору
 
   для: gOFREe   (08.09.2011 в 22:34)
 


document.getElementById("scnd"+obj[i].value).style.display = "inline";


грубо говоря ищет элемент с id равным scnd(значение option) т.е. <element id="scndЗначение option">
и соответственно если он отсутствует то что должно выводиться ?

  Ответить  
 
 автор: gOFREe   (08.09.2011 в 23:06)   письмо автору
 
   для: Scrum   (08.09.2011 в 22:46)
 

То что не выводится это значение, это я понимаю, а почему не выводятся выбранные позиции после него?

  Ответить  
 
 автор: Scrum   (08.09.2011 в 23:34)   письмо автору
 
   для: gOFREe   (08.09.2011 в 23:06)
 

Поподробнее.
Почему они должны выводиться ?

  Ответить  
 
 автор: gOFREe   (09.09.2011 в 11:06)   письмо автору
 
   для: Scrum   (08.09.2011 в 23:34)
 

Ну вот я и не понимаю ) Вот мой последний пример.

  Ответить  
 
 автор: Scrum   (08.09.2011 в 22:39)   письмо автору
 
   для: gOFREe   (08.09.2011 в 22:00)
 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>
  <title></title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <script type="text/javascript">
function sendReq (obj)
{
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].selected) {
                document.getElementById("scnd"+obj[i].value).style.display = "inline";
            } else {
               document.getElementById("scnd"+obj[i].value).style.display = "none";
            }

    }
}
  </script>
</head>

<body>
<select name="razdel[]" multiple onclick="sendReq(this)">
<option value="1">Фрукты</option>
<option value="2">Орехи</option>
<option value="3">Овощи</option>

<option value="7">Яблоки</option>
<option value="9">Соки</option>
</select>
<div id="scnd1" style="display: none;">Фрукты</div>
<div id="scnd2" style="display: none;">Орехи</div>
<div id="scnd3" style="display: none;">Овощи</div>

<div id="scnd7" style="display: none;">Яблоки</div>
<div id="scnd9" style="display: none;">Соки</div>
</body>

</html>

  Ответить  
 
 автор: gOFREe   (08.09.2011 в 23:08)   письмо автору
 
   для: Scrum   (08.09.2011 в 22:39)
 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>
  <title></title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <script type="text/javascript">
function sendReq (obj)
{
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].selected) {
                document.getElementById("scnd"+obj[i].value).style.display = "inline";
            } else {
               document.getElementById("scnd"+obj[i].value).style.display = "none";
            }

    }
}
  </script>
</head>

<body>
<select name="razdel[]" multiple onclick="sendReq(this)">
<option value="1">Фрукты</option>
<option value="2">Орехи</option>
<option value="3">Овощи</option>
<option value="5">Хрен</option>
<option value="7">Яблоки</option>
<option value="9">Соки</option>
</select>
<div id="scnd1" style="display: none;">Фрукты</div>
<div id="scnd2" style="display: none;">Орехи</div>
<div id="scnd3" style="display: none;">Овощи</div>

<div id="scnd7" style="display: none;">Яблоки</div>
<div id="scnd9" style="display: none;">Соки</div>
</body>

</html>

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

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