Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.09.2011, 11: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);
		}


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

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Opera не выполняет style.fontSize=... в поле input Маэстро Opera, Safari и др. 6 20.06.2011 11:03
тег <audio> в Opera, Chrome, Firefox Magneto Javascript под браузер 12 25.11.2010 14:12
Почему в Opera исчезает курсор при нажатии клавиши Esc ? Маэстро Opera, Safari и др. 3 23.11.2010 15:31
Как в opera узнать, что popup заблокирован? Kirrr Общие вопросы Javascript 0 06.08.2010 20:00
Не возвращается XML-ответ в Opera после AJAX-запроса Yojik Общие вопросы Javascript 4 17.03.2008 04:56