Реакция скрипта на изменение значения select

Avenus

Under Glory Yield
Реакция скрипта на изменение значения select

Помогите, пожалуйста, разобраться:
Есть SELECT с опциями, при изменении которых необходимо передать значение VALUE выбранной OPTION в скрипт, который берет это значение по document.getElementByID

Скрипт:
PHP:
<form action=''>
...
<select id='type'>
 <option value='1'>1</option>
 <option value='2'>2</option>
</select>
...
</form>

<script type='text/javascript'>
...
var TYPE=document.getElementById('type').value;
...
</script>
При изменении в SELECT переменная TYPE почему-то не изменяется... подскажите как?
 

Avenus

Under Glory Yield
Alexandre, Dovg :) и что...
Вы бы написали действия, а не просто обработчик события

-~{}~ 03.07.08 12:25:

Я же написал в посте: "реакция скрипта", а не "реакция в SELECT".
Полей много в форме, одно из них SELECT. Скрипт отслеживает значения в других полях, но в SELECT почему-то остается неизменным.
 

Mols

Новичок
Там не просто валуе надо брать.
Как то так.
oSelect.options[ oSelect.selectedIndex ].value
 

crocodile2u

http://vbolshov.org.ru
Avenus
Не слушай Mols, фигня это все.

Но, впрочем, и у тебя в голове порядочная каша. Ты значение-то переменной присвоил, но чтобы менять его при изменении выбранного пункта, нужно написать обработчик для onchange в селекте.

Вот смотри.

var TYPE=document.getElementById('type').value;

Все отлично - в переменной TYPE лежит значение выбранного пункта в нашем селекте.

Выбираем в селекте другой пункт. И что - переменную-то кто менять будет?
 

Mols

Новичок
мда. Чёт действительно перемудрил я. И просто oSelect.value - возвращает что надо)))) Сорри.
 

Avenus

Under Glory Yield
crocodile2u я согласен, а как мне поменять переменную TYPE при onchange?
Когда она не в функции... может передавать в функцию и потом извлекать, но не пойму как.

Nicholas нет.

-~{}~ 03.07.08 15:03:

К примеру, я напишу функцию до формы:
PHP:
<script type='text/javascript'>
function selchange(selform){
 selnum=selform.type.selectedIndex;
 isel=selform.type.options[selnum].value;
}
</script>
Сама форма:
PHP:
<form name='findform' method='post' action='/'>
...
<select id='type' name='type' onchange='selchange(this.form);'>
...
</form>
Потом у меня идет снова скрипт, в который и надо передать переменную (выбранное значение в select):
PHP:
<script type='text/javascript'>
...type='+isel+'...
</script>
-~{}~ 03.07.08 15:05:

В таком случае значение вообще не передается, а если до скрипта указать начальное значение:
PHP:
var isel=document.getElementById('type').value;
То при изменении в select значение isel все равно не изменяется.
 

Mols

Новичок
Можно сразу передать значение в функцию.
Код:
  <select id='type' name='type' onchange='selchange(this.value);'>
 

Avenus

Under Glory Yield
Mols бесполезно...значение изменяется только в самой функции, за ее пределами оно остается неизменным.
 

Mols

Новичок
А вообще если этот isel потом может быть использован только в одном месте, можно просто написать
PHP:
<script type='text/javascript'>
'...type='+ document.getElementById('type').value +'...'
</script>
И особо не замарачиваться
 

Avenus

Under Glory Yield
Mols :) так и было изначально...в посте же написано
Не работает.
 

Mols

Новичок
Блин... я похоже вообще не понимаю в чём там проблема.
 

crocodile2u

http://vbolshov.org.ru
Avenus
Тебе необходимо побольше узнать о переменных в жабоскрипте, об областях видимости. Можно дать тебе код, который будет работать - но тогда в следующий раз ты придешь с таким же вопросом.
 

Avenus

Under Glory Yield
crocodile2u я всегда разбираюсь в коде, прежде чем его использовать... лишь бы он рабочий был :)

-~{}~ 03.07.08 17:12:

К примеру, для проверки видимости переменной я использую alert. В этом случае также:
PHP:
<form>
...
<select id='type' onchange='selchange();'>...
...
</form>

<script type='text/javascript'>
// isel - глобальная переменная
// установить начальное значение необходимо до изменения в select, правильно?
isel=document.getElementById('type').value;
function selchange(){ 
 f=document.forms['findform'];
 selnum=f.type.selectedIndex; 
 var isel=f.type.options[selnum].value; // после onchange изменили значение isel
}

// Далее мне необходимо использвать isel в зависимости от выбранного select
var options={script:'/script.php?type='+isel+'...
// а здесь isel неизменна почему-то
</script>
 

crocodile2u

http://vbolshov.org.ru
Я ж говорил: "Тебе необходимо побольше узнать о переменных в жабоскрипте, об областях видимости".

Если бы ты это сделал, ты бы знал уже, что var внутри функции объявляет локальную переменную. Так что isel, с которым работает твоя selchange() - локальная и никакого отношения к глобальной isel не имеет.

ЗЫ. Можно сказать, ты isel в лужу :)
 

Avenus

Under Glory Yield
crocodile2u да это все бесполезно... ну исправил я это
И область видимости глобальная...а все равно в строке
PHP:
var options={script:'/script.php?type='+isel+...
Переменаая isel неизменяется.
 

kruglov

Новичок
Дык когда выполняется onchange и когда выполняется var options=... ?
 

Avenus

Under Glory Yield
kruglov а что должно раньше выполняться?
К тому же при изменении в SELECT и переменная OPTIONS должна ведь измениться за счет нового значения ISEL
 
Сверху