Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как передать onclick-функции значение value другого элемента (https://javascript.ru/forum/misc/22712-kak-peredat-onclick-funkcii-znachenie-value-drugogo-ehlementa.html)

sibbora 30.10.2011 13:30

Как передать onclick-функции значение value другого элемента
 
Пишу первый скрипт на JS (веб-форма), столкнулся с такой проблемой:

По событию onclick на выпадающем списке происходит обращение к функции. При этом функции нужно передать как value непосредственно этого выпадающего списка, так и value другого элемента в форме, а именно - radiobutton-a.

Вот код:
<input type="radio" name="polusharie" value="north" onclick="izmen_sozvezdie(this.value)">Северное полушарие
<input type="radio" name="polusharie" value="south" onclick="izmen_sozvezdie(this.value)">Южное полушарие
<select name="sozvezdie" size="1" onclick="calculate_zvezda(this.value,polusharie.value)"> 
<option value="0">Выберите группу созвездий</option>
</select>


Пробовал даже так:
<input type="radio" name="polusharie" value="north" onclick="izmen_sozvezdie(this.value)">Северное полушарие
<input type="radio" name="polusharie" value="south" onclick="izmen_sozvezdie(this.value)">Южное полушарие
<select name="sozvezdie" size="1" onclick="calculate_zvezda(this.value,document.getElementById('polusharie').value)"> 
<option value="0">Выберите группу созвездий</option>
</select>


...не работает ни так, ни этак. Второй аргумент в функции имеет значение undefined.

walik 30.10.2011 15:17

Цитата:

Сообщение от sibbora
Второй аргумент в функции имеет значение undefined.

Правильно, так как вы используете функцию getElementById, а самому элементу ID не прописали

sibbora 30.10.2011 15:25

walik, спасибо Вам большое.

Действительно, заработал второй фрагмент кода с заданным ID:
<input type="radio" name="polusharie" id="polusharie" value="north" onclick="izmen_sozvezdie(this.value)">Северное полушарие
<input type="radio" name="polusharie" id="polusharie" value="south" onclick="izmen_sozvezdie(this.value)">Южное полушарие
<select name="sozvezdie" size="1" onclick="calculate_zvezda(this.value,document.getElementById('polusharie').value)">
<option value="0">Выберите группу созвездий</option>
</select>


Хоть проблема решена, всё же мне интересно: почему не работает первый вариант кода с обращением просто по имени? В JS таким образом ограничена видимость свойств объектов? Дело в том, что я раньше только в VB и VBA программы писал, а там, насколько понимаю, сама концепция формы другая.

trikadin 30.10.2011 18:07

Потому что обращаться по имени к объекту можно только в контексте формы.

<form>
<input type="radio" name="polusharie_north" value="north" onclick="izmen_sozvezdie(this.value)">Северное полушарие
<input type="radio" name="polusharie_south" value="south" onclick="izmen_sozvezdie(this.value)">Южное полушарие
<select name="sozvezdie" size="1" onclick="calculate_zvezda(this.value, this.form.polusharie_north.value)">
<option value="0">Выберите группу созвездий</option>
</select>

</form>


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