Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.10.2010, 18:26
Новичок на форуме
Отправить личное сообщение для ky100 Посмотреть профиль Найти все сообщения от ky100
 
Регистрация: 03.10.2010
Сообщений: 3

<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>


Заранее благодарен )
Ответить с цитированием
  #2 (permalink)  
Старый 03.10.2010, 19:42
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Бред! Это ж просто плод больной фантазии!!! Почему id="cat[0]" должно работать??? Потому что ты так решил?
Ответить с цитированием
  #3 (permalink)  
Старый 03.10.2010, 19:55
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

<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>
Ответить с цитированием
  #4 (permalink)  
Старый 03.10.2010, 20:07
Новичок на форуме
Отправить личное сообщение для ky100 Посмотреть профиль Найти все сообщения от ky100
 
Регистрация: 03.10.2010
Сообщений: 3

Сообщение от Sweet Посмотреть сообщение
Бред! Это ж просто плод больной фантазии!!! Почему id="cat[0]" должно работать??? Потому что ты так решил?
ну зачем же так жестить то? ))
я и по нормальному понимаю )

это
this.form[1].selectedIndex = this.form[2].selectedIndex = this.selectedIndex;
сработает только в данной упрощённой форме,
а если селектов не 2 а 20?
а если помимо селектов ещё куча элементов?
Потому считаю целесообразным заключить в функцию и вызывать по событию.

из Ваших слов я понял, что некорректно имя id элемента.

И до сих пор не понятно как получить кол-во селектов на странице?
Ответить с цитированием
  #5 (permalink)  
Старый 03.10.2010, 20:47
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Я лишь хотел сказать, что нужно изучать, а не гадать на кофейной гуще!
Сообщение от ky100
И до сих пор не понятно как получить кол-во селектов на странице?
getElementsByTagName('select').length
Ответить с цитированием
  #6 (permalink)  
Старый 03.10.2010, 20:54
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от ky100
сработает только в данной упрощённой форме
Я специально упростил все до минимума, чтобы можно было видеть главное.
Ответить с цитированием
  #7 (permalink)  
Старый 03.10.2010, 21:02
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Вот две функции (обе работают ). Только 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>
Ответить с цитированием
  #8 (permalink)  
Старый 04.10.2010, 02:02
Новичок на форуме
Отправить личное сообщение для ky100 Посмотреть профиль Найти все сообщения от ky100
 
Регистрация: 03.10.2010
Сообщений: 3

Сообщение от Sweet Посмотреть сообщение
Я лишь хотел сказать, что нужно изучать, а не гадать на кофейной гуще!
getElementsByTagName('select').length
Изучаю )
Хорошо когда есть тот кто объяснит, когда уже не знаешь куда копать )

Сообщение от Sweet Посмотреть сообщение
Вот две функции (обе работают ). Только 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_ - то что я изначально и хотел )
Теперь я понял как обращаться к элементам и как юзать классы элементов.
Немного унифицировал функцию в доказательство усвоенного
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, большое спасибо )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт калькулятора (не могу добавить еще одно значение) Jee_Day Я не знаю javascript 2 22.05.2009 13:19