Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.07.2014, 21:45
Новичок на форуме
Отправить личное сообщение для eevr Посмотреть профиль Найти все сообщения от eevr
 
Регистрация: 16.06.2014
Сообщений: 9

Условие, если значение не найдено
Получаю значение из select'a.
var eng = document.getElementById('select_engine').selectedIndex;

Когда значение получено, все понятно. Но как сделать условие, если на странице нет этого select'a?

Проще говоря:
Если значение получено, то ....
Иначе ?
Ответить с цитированием
  #2 (permalink)  
Старый 28.07.2014, 22:12
Новичок на форуме
Отправить личное сообщение для eevr Посмотреть профиль Найти все сообщения от eevr
 
Регистрация: 16.06.2014
Сообщений: 9

Извиняюсь, ввел в заблуждение. Зато понял, почему не сработало.
Добавлю, полный вывод такой:
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".

Как это можно грамотнее написать?
Ответить с цитированием
  #3 (permalink)  
Старый 28.07.2014, 22:25
Новичок на форуме
Отправить личное сообщение для eevr Посмотреть профиль Найти все сообщения от eevr
 
Регистрация: 16.06.2014
Сообщений: 9

К сожаление не срабатывает на странице, где select не выводится. Видимо, потому, что не срабатывает событие onchange="engine();".
Ответить с цитированием
  #4 (permalink)  
Старый 28.07.2014, 23:23
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

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>
Ответить с цитированием
  #5 (permalink)  
Старый 29.07.2014, 00:04
Новичок на форуме
Отправить личное сообщение для eevr Посмотреть профиль Найти все сообщения от eevr
 
Регистрация: 16.06.2014
Сообщений: 9

В общем так оно и есть
<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, 29.07.2014 в 00:15.
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2014, 01:03
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 456

eevr,
function engine(e) {
    if (e && !e.currentTarget.selectedIndex) {
        $("#price_item").text("Цена 1");
    } else {
        $("#price_item").text("Цена 2");
    }
}

Последний раз редактировалось Rise, 29.07.2014 в 01:17.
Ответить с цитированием
  #7 (permalink)  
Старый 30.07.2014, 00:38
Аватар для BlancoDima
Интересующийся
Отправить личное сообщение для BlancoDima Посмотреть профиль Найти все сообщения от BlancoDima
 
Регистрация: 29.07.2014
Сообщений: 13

Дык просто проверяете есть ли элемент на странице, и если нет, то вызываете свою engine сами.
window.onload = function() {
	if (!document.getElementById('select_engine')) {
		engine();
	};
}

//Если хочется записать короче, то:
window.onload = function() {
	document.getElementById('select_engine') || engine();
}

Последний раз редактировалось BlancoDima, 30.07.2014 в 00:43.
Ответить с цитированием
  #8 (permalink)  
Старый 30.07.2014, 21:23
Новичок на форуме
Отправить личное сообщение для eevr Посмотреть профиль Найти все сообщения от eevr
 
Регистрация: 16.06.2014
Сообщений: 9

Большое спасибо за ответы! Разобрался
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
checkbox check если значение input djonA Общие вопросы Javascript 8 14.01.2014 06:44
Как ввести в поле ввода значение где есть javascript MOZG Общие вопросы Javascript 8 19.04.2013 10:28
Подставляем определенное значение в SQL запрос в зависмости от разрешения монитора MironM Общие вопросы Javascript 5 09.04.2012 21:54
как получить значение ид-а, из текушего хтмл тега dadli Общие вопросы Javascript 2 28.01.2012 15:16
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31