Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   глюк selectedIndex в Opera (https://javascript.ru/forum/css-html-browser/21771-glyuk-selectedindex-v-opera.html)

funkdoobiest 23.09.2011 12:57

глюк 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);
		}


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

funkdoobiest 23.09.2011 13:50

Вопрос закрыт. Все решилось проверкой активного элемента ДО for.


Часовой пояс GMT +3, время: 21:02.