показать элементы в зависимости от значения select
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



показать элементы в зависимости от значения... Expand / Collapse
Автор
Сообщение
16.08.2007 14:08
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 19.08.2007 12:26
Сообщ.: 3, Visits: 17
Здраствуйте, подскажите, как моно осуществить следующее:
Есть селект со значениями от 1 до 10, в зависимости от того, какое выбрано у него значение, такое кол-во элементов появляется в коде (например <P>). Искал решение, но что-то так и не нашел.
Сообщ. #915375
16.08.2007 17:40
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 04.05.2008 11:54
Сообщ.: 269, Visits: 2 380
slyend (16.08.2007)
Здраствуйте, подскажите, как моно осуществить следующее:
Есть селект со значениями от 1 до 10, в зависимости от того, какое выбрано у него значение, такое кол-во элементов появляется в коде (например <P>). Искал решение, но что-то так и не нашел.


<html>
<head>
<title>
<script>
var tegiz="<p>",a,b;
function C() {
for (var i=0; i<6; i++) { // 6 - кол-во option
if (((document.form1.elements[0])[i]).selected) b=B(i)+((document.form1.elements[0])[i]).value;
}
alert(b); //Отображает теги... + значение option'a
}

function B(num) {
a="";
for (var j=0;j<num;j++) a+=tegiz;
return a;
}
</script>
</head>
<body>
<form name="form1">
<select name="forma" size=1 onChange="C()">
<option value=1>тест 1
<option value=2>тест 2
<option value=3>тест 3
<option value=4>тест 4
<option value=5>тест 5
<option value=6>тест 6
</select>
</form>
</body>
</html>


----------------------------------
Я безработный...
Возьмите меня на работу. =)
Сообщ. #915382
17.08.2007 11:41
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
2 slyend

Если я правильно понял твой вопрос тебе нужно создавать теги <P> на лету. Вот пример как это сделать:

<html><head>
<title>Тест</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="javascript" type="text/javascript">
function createElements(objSelect) {
    var n = parseInt(objSelect.value);
    var addHere = document.getElementById("addHere");
    for (var i=0; i<n; i++)
    {
        var objP = document.createElement("P");
        var txt = document.createTextNode("параграф #"+(i+1));
        objP.appendChild(txt);
        addHere.appendChild(objP);
    }
}
</script>
</head><body>
<form>
<select name="n" onchange="createElements(this)">
<option value="1">добавить 1</option>
<option value="2">добавить 2</option>
<option value="3">добавить 3</option>
<option value="4">добавить 4</option>
<option value="5">добавить 5</option>
<option value="6">добавить 6</option>
<option value="7">добавить 7</option>
<option value="8">добавить 8</option>
<option value="9">добавить 9</option>
<option value="10">добавить 10</option>
</select>
</form>
<div id="addHere"></div>
</body></html>

2 Vizlim

На твоем месте я бы постеснялся выкладывать такой код. 1) Кол-во элементов в select можно определить на лету с помощью свойства options.length. Задавать их кол-во константой выигрыша не дает и только усложняет поддержку. 2) В JavaScript не рекомендуется в цикле писать обращения к вложенным объектам (document.form1.elements в твоем примере). Их лучше кешировать во временной переменной. Это упрощает скрипт и ускоряет его работу в длинных циклах. 3) Глобальных переменных лучше избегать, они тоже замедляют выполнение.

Сообщ. #915395
17.08.2007 12:38
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 04.05.2008 11:54
Сообщ.: 269, Visits: 2 380
bazile (17.08.2007)

На твоем месте я бы постеснялся выкладывать такой код. 1) Кол-во элементов в select можно определить на лету с помощью свойства options.length. Задавать их кол-во константой выигрыша не дает и только усложняет поддержку. 2) В JavaScript не рекомендуется в цикле писать обращения к вложенным объектам (document.form1.elements в твоем примере).Их лучше кешировать во временной переменной. Это упрощает скрипти ускоряет его работу в длинных циклах. 3) Глобальных переменных лучше избегать, они тоже замедляют выполнение.


Признаю, что был неправ... "поспешишь людей насмешишь", вот теперь стыдно поторопился с ответом... Учту все замечания на будущее =))


----------------------------------
Я безработный...
Возьмите меня на работу. =)
Сообщ. #915396
18.08.2007 3:37
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 19.08.2007 12:26
Сообщ.: 3, Visits: 17
Спасибо! буду пробовать, сообщу о своих успехах.
Да, генерить надо на лету. Причем у меня там будут не параграфы, а селекты. Соответственно назрел вопрос (может дурацкий), будут ли они (сгенеренные) учитываться при отправке всей формы (у меня заро-о-овая такая форма)?
Сообщ. #915408
18.08.2007 12:07
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 19.08.2007 12:26
Сообщ.: 3, Visits: 17
2 bazile
Не могли бы вы подсказать, как заставить приведенный вами прмер работать отлько один раз, те при повторном выборе селекта с name="n" параграфы не добавлялись к предыдущим, а генерились заново?
Сообщ. #915410
18.08.2007 14:02
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 04.05.2008 11:54
Сообщ.: 269, Visits: 2 380
Как вариант, хотя и не самый лучший, но рабочий...
var n = parseInt(objSelect.value);
var addHere = document.getElementById("addHere");

document.getElementById("addHere").innerHTML="";
for (var i=0; i<n; i++)
{


----------------------------------
Я безработный...
Возьмите меня на работу. =)
Сообщ. #915411
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 8:51