Jump to content
  • 0

Показать div по выбору из select


neutron
 Share

Question

Добрый день.

Пробую сделать такую вещь, но не выходит:

Есть страница:

<html>
<head>
</head>
<body>

<select name='Count'>
<option value="1/54">1/54</option>
<option value="2/54">2/54</option>
<option value="3/54">3/54</option>
<option value="4/54">4/54</option>
</select>


<div id="1/54" style="display: none">1/54</div>
<div id="2/54" style="display: none">2/54</div>
<div id="3/54" style="display: none">3/54</div>
<div id="4/54" style="display: none">4/54</div>

</body>
</html>

Подскажите пожалуйста, как сделать так, чтоб при выборе из select значения (например 1/54) мне показывался div с этим id ?

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

В id элемента, насколько я знаю нельзя использовать символ «/», а ещё он должен начинаться с буквы. По теме — ставите селекту событие onchange и делаете так:

document.getElementById(this.value).style.display='block';

Link to comment
Share on other sites

  • 0

<html>
<head>
</head>
<body>

<select name='Count' onchange="document.getElementById(this.value).style.display='block';">
<option>размер</option>
<option value="a1_54">1/54</option>
<option value="a2_54">2/54</option>
<option value="a3_54">3/54</option>
<option value="a4_54">4/54</option>
</select>


<div id="a1_54" style="display: none">1/54</div>
<div id="a2_54" style="display: none">2/54</div>
<div id="a3_54" style="display: none">3/54</div>
<div id="a4_54" style="display: none">4/54</div>

</body>
</html>

Вот так заработало. Но я не учел что при смене select новый div показывается, но старый не убирается...

Надо функцию писать?

Edited by neutron
Link to comment
Share on other sites

  • 0

Надо. Оберните все дивы в один контейнер, потом внутри него циклом пробегайтесь по всем дивам и прячьте их, после этого показывайте нужный див. Эта задача настолько тривиальна, что я даже не знаю... наверно это самое первое что люди на яваскрипте делают... ну может кроме alert('hello world'); ;)

Link to comment
Share on other sites

  • 0
Надо. Оберните все дивы в один контейнер, потом внутри него циклом пробегайтесь по всем дивам и прячьте их, после этого показывайте нужный див. Эта задача настолько тривиальна, что я даже не знаю... наверно это самое первое что люди на яваскрипте делают... ну может кроме alert('hello world'); ;)

Я это и делаю первый раз на яваскрипте)))

Допустим обернул я дивы в контейнер.

<div id="container">
<div id="a1_54" style="display: none">1/54</div>
<div id="a2_54" style="display: none">2/54</div>
<div id="a3_54" style="display: none">3/54</div>
<div id="a4_54" style="display: none">4/54</div>
</div>

Что дальше сделать, извините уж, не понял. точнее принцип понял, а как сделать -нет, расскажите пожалуйста подробнее

Link to comment
Share on other sites

  • 0

function showElem(contId, id, tag) {
var container = document.getElementById(cont.id);
var elems = container.getElementsByTagName(tag);

for (var i = 0; i < elems.length; i++) {
elems[i].style.display = 'none';
}

document.getElementById(id).style.display = '';
}

<select id="test" name="test" onchange="showElem('container', this.value, 'div')">
<option value="a1_54">1/54</option>
<option value="a2_54">2/54</option>
<option value="a3_54">3/54</option>
<option value="a4_54">4/54</option>
</select>

Link to comment
Share on other sites

  • 0

чувствую себя тупым ;)

<html>
<head>
</head>
<body>
<script language="JavaScript" type="text/javascript">
function showElem(contId, id, tag) {
var container = document.getElementById(cont.id);
var elems = container.getElementsByTagName(tag);

for (var i = 0; i < elems.length; i++) {
elems[i].style.display = 'none';
}

document.getElementById(id).style.display = 'block';
}
</script>

<select id="test" name="test" onchange="showElem('container', this.value, 'div')">
<option value="a1_54">1/54</option>
<option value="a2_54">2/54</option>
<option value="a3_54">3/54</option>
<option value="a4_54">4/54</option>
</select>

<div id="container">
<div id="a1_54" style="display: none">1/54</div>
<div id="a2_54" style="display: none">2/54</div>
<div id="a3_54" style="display: none">3/54</div>
<div id="a4_54" style="display: none">4/54</div>
</div>

</body>
</html>

Сделал так, ничего не работает

Link to comment
Share on other sites

  • 0

Вот с помощью jQuery

<html>
<head>
<script type="text/javascript" src="jquery.js"></script> <!-- НУЖНА JQUERY БИБЛИОТЕКА!! -->
<script type="text/javascript">
<!--
$(document).ready(function() {

$('#container div').css('display','none'); //Скрываем все блоки

$("#test").change(function(){ //При смене
$('#container div').css('display','none'); //Скрываем все открытые блоки
id = $('#test option:selected').val(); //Вытаскиваем value
$('#'+id).show(); //Показываем блок c таким же id как наш value
});

});
-->
</script>
</head>
<body>

<select id="test" name="test">
<option value="a1_54">1/54</option>
<option value="a2_54">2/54</option>
<option value="a3_54">3/54</option>
<option value="a4_54">4/54</option>
</select>

<div id="container">
<div id="a1_54">1/54</div>
<div id="a2_54">2/54</div>
<div id="a3_54">3/54</div>
<div id="a4_54">4/54</div>
</div>

</body>
</html>

Вот как-то так...

Link to comment
Share on other sites

  • 0

Спасибо за помощь, но с JQuery не вариант.

При подключение jQuery что-то конфликтует и нужный функционал сайта не работает.

На простом JS не получилось рализовать, несмотря на помощь Great Rash

Edited by neutron
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy