Вы правы, IceDragon, нет смысла использовать несколько if / else, потому что каждый раз, когда вы добавляете опции, вам придется переписывать свой код.Есть несколько способов избежать этого.Вот только один подход:
<html><body>
<form>
<p>
<input type="radio" name="seat" onclick="chose(this, 'Standard')" /> Standard seat
<input type="radio" name="seat" onclick="chose(this, 'Wheelchair')" /> Wheelchair seat
</p><p>
<input type="radio" name="area" onclick="chose(this, 'BN')" /> Back Nave
<input type="radio" name="area" onclick="chose(this, 'FN')" /> Front nave
<input type="radio" name="area" onclick="chose(this, 'MN')" /> Middle nave
</p>
</form>
<script>
// make sure to put these in the order you wish them to appear in the output
var selections = { area: '', seat: '' };
var seatsArray = [];
function chose(input, value) {
selections[input.name] = value;
}
// call this function when user clicks the floor plan:
function image_clicked(e) {
var desc = [];
for (var i in selections) if (selections[i] != '') desc.push(selections[i]);
seatsArray.push(desc.join(', ') + ' ' + e.posX, e.posY);
}
</script>
</body></html>
Обратите внимание, что в объекте selections
мы отслеживаем выборки, которые пользователь сделал до сих пор.Затем, когда пользователь щелкает изображение (или любой другой, запускающий код, над которым вы работаете), функция просто форматирует уже собранные значения.
Единственный недостаток написанного мной кода состоит в том, что браузеры склонныкэшируйте состояние переключателей, поэтому переключатель уже может быть выбран, но функция selected () не была вызвана.Один быстрый и грязный обходной путь - добавить идентификатор в тег формы и запустить его при загрузке страницы:
document.getElementById('form').reset();
Где «форма» - это атрибут идентификатора тега формы.