Условие, если значение не найдено
Получаю значение из select'a.
var eng = document.getElementById('select_engine').selectedIndex; Когда значение получено, все понятно. Но как сделать условие, если на странице нет этого select'a? Проще говоря: Если значение получено, то .... Иначе ? |
eevr,
var eng = document.getElementById('select_engine'); if (eng) { } else { } |
Извиняюсь, ввел в заблуждение. Зато понял, почему не сработало.
Добавлю, полный вывод такой: function engine() { var eng = document.getElementById('select_engine').selectedIndex; switch (eng) { case 0: $("#price_item").text("Цена 1"); break; default: $("#price_item").text("Цена 2"); } } Срабатывает на onchange="engine();" Условие такое: если на странице есть select и выбран первый option (value=0), то выводить "Цена 1", иначе "Цена 2", а если на странице select'a нет, то выводить "Цена 2". Как это можно грамотнее написать? |
eevr,
function engine() { var eng = document.getElementById('select_engine'); if (eng && !eng.selectedIndex) { $("#price_item").text("Цена 1"); } else { $("#price_item").text("Цена 2"); } } |
К сожаление не срабатывает на странице, где select не выводится. Видимо, потому, что не срабатывает событие onchange="engine();".
|
eevr,
Приведите используемую HTML разметку, так как не совсем понятно, что вы имеете и как делаете <select onchange="engine(this)"> <option value="0">Сделайте свой выбор</option> <option value="1">1</option> <option value="2">2</option> </select> <div id="price_item"></div> <script> function engine(el) { var price_txt = document.getElementById('price_item'); var price = ["", "Цена 1", "Цена 2"]; var sel = el.options[el.options.selectedIndex].value; price_txt.innerHTML = price[sel]; } </script> |
В общем так оно и есть
<select name="options" onchange="engine();" id="select_engine"> <option>Выбрать</option> <option value="25">Паметр 1</option> <option value="26">Параметр 2</option> </select> <p id="price_item"></p> <script> function engine() { var eng = document.getElementById('select_engine'); if (eng && !eng.selectedIndex) { $("#price_item").text("Цена 1"); } else { $("#price_item").text("Цена 2"); } } </script> Дело в том, что одном случае <select> выводится, а другом его вообще нет. Т.е. как я понимаю, события не возникает. Там, где <select> есть, все правильно работает, а там, где его нет ничего не происходит (в моем понимании, так и должно быть). Вот и взываю о помощи, как это грамотно решить? |
eevr,
function engine(e) { if (e && !e.currentTarget.selectedIndex) { $("#price_item").text("Цена 1"); } else { $("#price_item").text("Цена 2"); } } |
Дык просто проверяете есть ли элемент на странице, и если нет, то вызываете свою engine сами.
window.onload = function() { if (!document.getElementById('select_engine')) { engine(); }; } //Если хочется записать короче, то: window.onload = function() { document.getElementById('select_engine') || engine(); } |
Большое спасибо за ответы! Разобрался
|
Часовой пояс GMT +3, время: 18:52. |