Вам не нужно перебирать все переключатели, чтобы найти нажатую.Вы можете передать выбранный элемент непосредственно в вашу функцию:
function planeChoice(element) {
// element refers to the clicked radio button
var plane = element.value;
switch (plane) {
//...
}
}
Чтобы это работало, вы должны передать this
своей функции:
<input type="radio" name="planeButton" value="152"
onclick="planeChoice(this)" />
this
относится кHTML-элемент, к которому вы прикрепляете обработчик события, поэтому в данном случае он ссылается на элемент <input>
.
Чтобы узнать больше о событиях, я предлагаю прочитать статьи по http://quirksmode.org, начиная с Введение в события и Обработчики ранних событий .
Два предложения длядальнейшее улучшение:
(A) Вы можете использовать map (который является простым объектом в JavaScript) вместо оператора switch
для определения соответствующего сообщения:
var map = {
"152": "A small two-place-airplane for flight training",
"172": "The smaller of two four-place airplanes"
// ...
};
Карту также проще поддерживать (расширять).
Получив значение радиокнопки, вы можете получить доступ к сообщению с помощью:
alert(map[plane]);
Вы не можете хранить только примитивные значения (например, строки), вы также можете сохранять функции и вызывать их, еслиВы хотите сделать более сложные вещи.Но чтобы узнать больше о функциях и о том, как их использовать, вам следует прочитать руководство по JavaScript.
(B) Вы можете использовать делегирование события вместо привязки того же обработчик событий для каждого элемента (это работает через всплывающее сообщение ).Обработчик события click
присоединен к элементу <form>
:
<form onclick="planeChoice(event)" ...>
Или, что еще лучше, получите ссылку на элемент формы и присоедините обработчик события с помощью JavaScript:
document.getElementById("myForm").onclick = planeChoice;
Переданный объект события содержит информацию о том, по какому элементу щелкнули:
function planeChoice (event) {
event = event || window.event; // for IE
var target = event.target || event.srcElement; // for IE
if(target.type === "radio") { // if a radio button is clicked
var plane = target.value;
// ... further code
}
}