@iwebdesigner

Как установить метод selected для объекта option в зависимости от содержания URL?

Здравствуйте!
Хочу заставить выпадающий список автоматически выбирать нужный пункт, если мы находимся на странице, в URL которой содержится одно из значений value. А если не содержится, то оставить значение по умолчанию.
Например:
<select id="marka">
	<option value="">Выберите марку...</option>
	<option value="toyota">Toyota</option>
	<option value="honda">Honda</option>
</select>

Если мы находимся на странице site.ru или site.ru/marki, то должен быть выбран пункт "Выберите марку...", а если, например, на странице site.ru/marki/honda/civic, то должен автоматически выбираться пункт "Honda".

Понимаю, что нужно как-то перебрать все value в select с определённым id и если есть совпадения добавить к нему selected.

Из найденного в интернете наваял код, но как его довести до ума не пойму:
$('#marka option').each(function () {
  if (document.location.href.indexOf(this.getElementById("marka").options[0]) == -1) {
    // не содержит
  } else {
    document.getElementById("marka").options[0].selected=true;
  }
}

Буду признателен за любую помощь!
  • Вопрос задан
  • 706 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
jQuery:
$('#marka option').each(function () {
  var $this = $(this);
  if (location.href.indexOf($this.val()) === -1) {
    // не содержит
  } else {
    $this.prop('selected', true);
  }
});


Native DOM API:
Array.prototype.forEach.call(document.getElementById('marka').options, function(opt) {
  if (location.href.indexOf(opt.value) === -1) {
    // не содержит
  } else {
    opt.selected = true;
  }
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Привет! Ничего перебирать не нужно:
// Получаем текущий путь pathname и удаляем слэши.
var selected_val = window.location.pathname.split("/").join("");
$("#marka option[value="+selected_val+"]").attr("selected","selected");
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы