<select> установка нескольких селектов в одно значение
Задача: по выбору selectall установить все селекты cat[] в это же значение.
Вопрос: как реализовать Сначала получаем в переменную выбраное значение. Теперь циклом установить все селекты. Но... Для этого надо знать кол-во элементов cat[] на странице. document.myForm.cat.length не работает, наверное потому что это массив )) Помогите разобраться и реализовать )
<script type="text/javascript">
function select_all(){
var clv=document.myForm.selectall.value;
alert(clv);
}
</script>
<form method="post" name="myForm" action="">
<select id="selectall" name="selectall" onChange="select_all()">
<option value='1'>Яблоко</option>
<option value='2'>Груша</option>
<option value='3'>Тыква</option>
</select><hr />
<select id="cat[0]">
<option value='1'>Яблоко</option>
<option value='2'>Груша</option>
<option value='3'>Тыква</option>
</select><br />
<select id="cat[1]">
<option value='1'>Яблоко</option>
<option value='2'>Груша</option>
<option value='3'>Тыква</option>
</select>
</form>
Заранее благодарен ) |
Бред! Это ж просто плод больной фантазии!!! Почему id="cat[0]" должно работать??? Потому что ты так решил?
|
<form method="post" name="myForm" action="">
<select onChange="this.form[1].selectedIndex = this.form[2].selectedIndex = this.selectedIndex;">
<option>Яблоко</option>
<option>Груша</option>
<option>Тыква</option>
</select><hr />
<select>
<option>Яблоко</option>
<option>Груша</option>
<option>Тыква</option>
</select><br />
<select>
<option>Яблоко</option>
<option>Груша</option>
<option>Тыква</option>
</select>
</form>
|
Цитата:
я и по нормальному понимаю ) это this.form[1].selectedIndex = this.form[2].selectedIndex = this.selectedIndex; сработает только в данной упрощённой форме, а если селектов не 2 а 20? а если помимо селектов ещё куча элементов? Потому считаю целесообразным заключить в функцию и вызывать по событию. из Ваших слов я понял, что некорректно имя id элемента. И до сих пор не понятно как получить кол-во селектов на странице? |
Я лишь хотел сказать, что нужно изучать, а не гадать на кофейной гуще!
Цитата:
getElementsByTagName('select').length
|
Цитата:
|
Вот две функции (обе работают:) ). Только func ищет все select'ы, а func_ - только select'ы внутри данной формы.
<form method="post" name="myForm" action="">
<select onChange="func(this);">
<option>Яблоко</option>
<option>Груша</option>
<option>Тыква</option>
</select><hr />
<select class="cat">
<option>Яблоко</option>
<option>Груша</option>
<option>Тыква</option>
</select><br />
<select>
<option>Яблоко</option>
<option>Груша</option>
<option>Тыква</option>
</select><br />
<select class="cat">
<option>Яблоко</option>
<option>Груша</option>
<option>Тыква</option>
</select>
</form>
<script>
function func(el){ //
var elements = document.getElementsByTagName('select'), sI = el.selectedIndex;
for(var i = 0; i < elements.length; i++) if(elements[i].className == 'cat') elements[i].selectedIndex = sI;
}
function func_(el){
var elements = el.form, length = el.form.length, sI = el.selectedIndex;
for(var i = 0; i < length; i++) if(elements[i].className == 'cat') elements[i].selectedIndex = sI;
}
</script>
|
Цитата:
Хорошо когда есть тот кто объяснит, когда уже не знаешь куда копать ) Цитата:
Собственно решение задачи ) func_ - то что я изначально и хотел ) Теперь я понял как обращаться к элементам и как юзать классы элементов. Немного унифицировал функцию в доказательство усвоенного :write:
function selectall(el,cl){
var elements = el.form, length = el.form.length, sI = el.selectedIndex;
for(var i = 0; i < length; i++){
if(elements[i].className == cl) elements[i].selectedIndex = sI;
}
}
Sweet, большое спасибо ) |
| Часовой пояс GMT +3, время: 09:45. |