Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.12.2015, 12:41
Аспирант
Отправить личное сообщение для eddin Посмотреть профиль Найти все сообщения от eddin
 
Регистрация: 11.10.2010
Сообщений: 60

Узнать значение select, когда их несколько
Добрый день. Есть такой HTML-код
<form name="main" id="main"> 
	<select name="sel">
		<option value="0">Выберите</option>
		<option value="24">Раз</option>
		<option value="25">Два</option>
		<option value="26">Три</option>
	</select>

	<select name="sel">
		<option value="0">Выберите</option>
		<option value="24">Раз</option>
		<option value="25">Два</option>
		<option value="26">Три</option>
	</select>
</form>

Количество select может быть любым, нахождение select по ID невозможно, т.к. в коде его не будет.
Пожалуйста, подскажите, как с помощью JS узнать в каком именно select в каждый текущий момент изменяется значение (выбирается option) и на какое.

Пробовал вот так, но что-то не работает:
function chck_sel() {
var sel = document.getElementsByName("sel"),

thissel = this.sel;

alert(thissel);

}
chck_sel();
Ответить с цитированием
  #2 (permalink)  
Старый 01.12.2015, 12:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

eddin,
что мешает обойти циклом все селекты и получить значения?
Ответить с цитированием
  #3 (permalink)  
Старый 01.12.2015, 13:03
Аспирант
Отправить личное сообщение для eddin Посмотреть профиль Найти все сообщения от eddin
 
Регистрация: 11.10.2010
Сообщений: 60

рони, я думал это не самый оптимальный вариант...
К тому же у всех селектов одинаковый name="sel", поэтому даже если "обойти циклом все селекты и получить значения", то проблематично будет получить значение того селекта, которое было изменено в текущий момент. Конечно можно, но это получится код, где при каждом изменении одного из селектов придется сначала запоминать предыдущее состояние всех селектов, а затем сравнивать с новыми значениями и таким образом вычислять тот селект, который был изменен...
Ну а всё же можно как-то получить аналог вот такого?
function chck_sel() {
this_option_value = document.getElementById("sel").options.selectedIndex+1;
    alert("Выбран "+this_option_value+" элемент списка");
}

При условии, что у select-ов нет ID и class, но есть name="sel"

Последний раз редактировалось eddin, 01.12.2015 в 13:32.
Ответить с цитированием
  #4 (permalink)  
Старый 01.12.2015, 13:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

eddin,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<form name="main" id="main" >
	<select name="sel">
		<option value="0">Выберите</option>
		<option value="24">Раз</option>
		<option value="25">Два</option>
		<option value="26">Три</option>
	</select>

	<select name="sel">
		<option value="0">Выберите</option>
		<option value="24">Раз</option>
		<option value="25">Два</option>
		<option value="26">Три</option>
	</select>
</form>
<script>
window.addEventListener('DOMContentLoaded', function() {
  var form = document.querySelector('#main'),
  select = form.querySelectorAll('select'),
  arr;
  form.addEventListener('change', function() {
    arr = [].map.call( select, function(sel) {
         return sel.value
     });
  alert(arr)
  });
    });
</script>
</body>

</html>
Ответить с цитированием
  #5 (permalink)  
Старый 01.12.2015, 14:25
Аспирант
Отправить личное сообщение для eddin Посмотреть профиль Найти все сообщения от eddin
 
Регистрация: 11.10.2010
Сообщений: 60

рони, спасибо! Но это не совсем то... Эта функция возвращает значения всех селектов. Но как узнать какой именно был изменен? Ведь количество селектов может быть любым, как и их значения по умолчанию.
Ну вот например требуется поменять цвет текста того селекта, значение которого поменялось. При этом неважно на какое значение оно поменялось, например это новое значение может быть таким же, как у нескольких других селектов, но цвет текста меняется только у него.
Загонять значения всех селектов в массив перед изменением и потом после изменения обходить все селекты и сравнивать?
Ответить с цитированием
  #6 (permalink)  
Старый 01.12.2015, 15:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

eddin,
поставьте функцию на все селекты на событие 'change' и ничего не вычисляйте просто меняйте цвет если вам так нужно.
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2015, 15:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

eddin,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
 .red{
   background-color: rgba(0, 128, 0, 1);
 }

  </style>
</head>

<body>
<form name="main" id="main" >
	<select name="sel">
		<option value="0">Выберите</option>
		<option value="24">Раз</option>
		<option value="25">Два</option>
		<option value="26">Три</option>
	</select>

	<select name="sel">
		<option value="0">Выберите</option>
		<option value="24">Раз</option>
		<option value="25">Два</option>
		<option value="26">Три</option>
	</select>
</form>
<script>
window.addEventListener('DOMContentLoaded', function() {
  var form = document.querySelector('#main'),
  select = form.querySelectorAll('select');
  form.addEventListener('change', function(event) {
      event.target.name && event.target.name == 'sel' && event.target.classList.add('red')

  });
    });
</script>
</body>

</html>

Последний раз редактировалось рони, 01.12.2015 в 16:00.
Ответить с цитированием
  #8 (permalink)  
Старый 01.12.2015, 15:35
Аспирант
Отправить личное сообщение для eddin Посмотреть профиль Найти все сообщения от eddin
 
Регистрация: 11.10.2010
Сообщений: 60

рони, спасибо! Эх, форум не дает вам плюсануть, пишет, что надо сначала кому-то другому это сделать...

Последний раз редактировалось eddin, 01.12.2015 в 15:38.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать значение свойства modal у окна? khusamov ExtJS 1 11.05.2014 11:27
Как узнать значение id у найденных тегов? wkololo_4ever Events/DOM/Window 1 25.03.2014 18:00
Как можно узнать когда "якорь" пропал с URL ? Krava Элементы интерфейса 3 14.12.2012 20:25
Как узнать, когда закончилась загрузка dmitry111 Оффтопик 20 03.12.2012 23:32
Как сохранить предыдущее значение select? MaxD Общие вопросы Javascript 3 21.07.2011 12:36