Показать сообщение отдельно
  #1 (permalink)  
Старый 23.09.2011, 12:57
Новичок на форуме
Отправить личное сообщение для funkdoobiest Посмотреть профиль Найти все сообщения от funkdoobiest
 
Регистрация: 23.09.2011
Сообщений: 3

глюк selectedIndex в Opera
Есть два выпадающих списка, в каждом по 16 значений. Есть две функции, которые проверяют, какое значение выбрано в одном и в другом списке. Суть всего этого в том, чтобы человек не мог выбрать два значения , в двух списках, общей суммой больше 16. Изначально мы видим два списка по 16 значений. Если в одном выберем 10, то во втором списке удалится часть значений, и выбрать можно будет только до 6.

Чтобы человека не мучить, я сделал, чтобы, если выбираем одно значение в одном списке, то во втором списке активным остается то, которое было активным, а не сбрасылало бы на «0». Для этого было добавлено условие на проверку selectedIndex.

Во всех браузерах все работает, но в Опере (проверяю на 11.51), если выбрать любое значение в первом списке, когда во втором выбрано «0», то во втором автоматом ставится значение «1». И выходит, что после того, как вы начали что-то вообще выбирать, то вы не сможете установить оба значения на «0».

Код
function getcamout (){
	var selOut = document.getElementById("coutcam2");
	var selIn = document.getElementById("coutcam1");
	selOut.options.length=17-parseInt(selIn.value);
	for (i=0; i<selOut.options.length; i++)
		if (selOut.options[selOut.selectedIndex].value != -1){
			if (selOut.options[selOut.selectedIndex].value == i){
				selOut.options[i] = new Option(i, i, false, true);
			}else{
				selOut.options[i] = new Option(i, i);
			}
		}else{
			selOut.options[i] = new Option(i, i);
		}
}

function getcamin (){
	var selOut = document.getElementById("coutcam2");
	var selIn = document.getElementById("coutcam1");
	selIn.options.length=17-parseInt(selOut.value);
	for (i=0; i<selIn.options.length; i++)
		if (selIn.options[selIn.selectedIndex].value != -1){
			if (selIn.options[selIn.selectedIndex].value == i){
				selIn.options[i] = new Option(i, i, false, true);
			}else{
				selIn.options[i] = new Option(i, i);
			}
		}else{
			selIn.options[i] = new Option(i, i);
		}


Не сочтите за тупого, только начал постигать яваскрипт, и, как это часто бывает, постигаю сразу в работе.
Ответить с цитированием