Получение индекса текущего option`а в multiple select

Vano_big

Новичок
Получение индекса текущего option`а в multiple select

Хотелось бы при отрабатывании события onchange получить index, value, text что угодно текущего option`а, т.е. того на котором кликнули.
Причем кликнули это не только выделили, но и сняли выделение.
selectedIndex конечно же не годится, возвращает индекс первого опшиона имеющего статус selected.
Кто как это решает? Поделитесь опытом.
 

white phoenix

Новичок
1. onclick на option.
2. Вот пример с onchange, за кривизну кода прошу ногами не бить, в JS я не смыслю.
PHP:
<select onchange='select_onchange()' id='myselect' multiple=1 size=3>
<option>First</option><option>Second</option><option>Third</option>
</select><tag id='mytext'></tag>
<script>
options = new Array();
select = document.getElementById('myselect')
function get_options()
{
 var options = new Array();
 for(i=0;i<select.options.length;i++) {options[i] = select.options[i].selected;}
 return options;
}
options = get_options();
function select_onchange()
{
 var newoptions = get_options();
 var diff = new Array;
 for(i=j=0;i<newoptions.length;i++) {if (options[i] != newoptions[i]) {diff[j] = new Array(i,newoptions[i]); j++}}
 options = newoptions;
 text = document.getElementById('mytext')
 text.innerHTML = '';
 if (diff.length > 0) {text.innerHTML += '<ul>Изменившиеся элементы:<br>';}
 for(i=0;i<diff.length;i++)
 {
  if (diff[i][1] == true) {s = 'включился';}
  else {s = 'выключился';}
  text.innerHTML += '<li>Элемент #'+diff[i][0]+' ('+select[diff[i][0]].value+') '+s;
 }
 if (diff.length > 0) {text.innerHTML += '</ul>';}
 return diff;
}
select_onchange();
</script>
 

Vano_big

Новичок
Спасибо за помощь. Собственно про сохранение предыдущего состояния я тоже думал, вернее там именно и сделал.
Я все же думал что есть какой-то иной способ. Перерыл MSDN, ничего не нашел.
Честно говоря, со стороны разработчиков стандарта это свинство. Вещь то нужная.
 

Vano_big

Новичок
На самом деле устраивает конечно же, но для текущей реализации не подходит. Свои особенности имеются, нет возможности навесить на option событие. Select формируется автоматически, средствами некоего класса, а дописать данный функционал в нем немного проблематично, не укладывается в общую концепцию.

-~{}~ 14.02.06 12:49:

Кстати, доверился совету называется. Решил проверить с onclick. Если че, option не поддерживает onclick.
 

Vano_big

Новичок
Opera 9 - это не показатель. IE действительно не поддерживает. Вообще жалко что нельзя напрямую получить индекс кликнутого элемента, кода пришлось бы писать раза в 3 меньше.
 
Сверху