<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, время: 08:19. |