Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 18.05.2018, 13:14   #1
Javany
Форумчанин
 
Регистрация: 15.05.2018
Сообщений: 75
Репутация: 129
По умолчанию Не получается забрать select

Добрый день! Подскажите пожалуйста, почему у меня получается забрать select только через document.getElementById().
Код:

<select id ="selCol"  name="color[]">
	<option value="red">красный</option>
	<option value="green">зеленый</option>
	<option value="blue">синий</option>
</select>

<script>
	var but = document.getElementById('button');
	but.addEventListener('click',function(){
	var sel = document.getElementById('selCol');
 	var clone = sel.cloneNode(true);
	sel.parentNode.insertBefore(clone, sel.nextSibling);
	})

</script>

Поскольку я скриптом клонирую элемент, получаю несколько элементов с одинаковым ID, что само по себе плохо. Когда пытаюсь забрать через querySelector или getElementsByTagName, получаю в консоли sel.cloneNode is not a function. Что я делаю не так?
Спасибо.
Javany вне форума   Ответить с цитированием
Старый 18.05.2018, 13:27   #2
Stanislav
Квадрокоптерист
Профессионал
 
Регистрация: 29.09.2007
Сообщений: 1,804
Репутация: 532
По умолчанию

Цитата:
с одинаковым ID, что само по себе плохо
это не то что плохо, это не допустимо! используйте классы (и то они потребуются если Вам нужно будет пробежаться по выбранным элементам) а затем забирайте через
Код:

$('option:selected',this).text();

__________________
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 18.05.2018 в 13:30.
Stanislav вне форума   Ответить с цитированием
Старый 18.05.2018, 15:41   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,493
Репутация: 5308
По умолчанию

кстати, нет никаких проблем в том, чтобы сменить id при клонировании.

например:
Код:

<head>
  <meta charset="utf-8">
</head>
<body>
<div>
<select id ="selCol"  name="color[]">
	<option value="red">красный</option>
	<option value="green">зеленый</option>
	<option value="blue">синий</option>
</select>
</div>
<input type="button" id="button" name="button" value="Клонировать" >


<script>
var CloneIdVar = 1;
	var but = document.getElementById('button');
	but.addEventListener('click',function(){
		var sel = document.getElementById('selCol');
	 	var clone = sel.cloneNode(true);
                clone.id = clone.id.substr(0,6)+(CloneIdVar++);
//		sel.parentNode.insertBefore(clone, sel.nextSibling);
		sel.parentNode.appendChild(clone);
	})
</script>
</body>

Serge_Bliznykov на форуме   Ответить с цитированием
Старый 21.05.2018, 11:50   #4
Javany
Форумчанин
 
Регистрация: 15.05.2018
Сообщений: 75
Репутация: 129
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
кстати, нет никаких проблем в том, чтобы сменить id при клонировании.

например:
Код:

<head>
  <meta charset="utf-8">
</head>
<body>
<div>
<select id ="selCol"  name="color[]">
	<option value="red">красный</option>
	<option value="green">зеленый</option>
	<option value="blue">синий</option>
</select>
</div>
<input type="button" id="button" name="button" value="Клонировать" >


<script>
var CloneIdVar = 1;
	var but = document.getElementById('button');
	but.addEventListener('click',function(){
		var sel = document.getElementById('selCol');
	 	var clone = sel.cloneNode(true);
                clone.id = clone.id.substr(0,6)+(CloneIdVar++);
//		sel.parentNode.insertBefore(clone, sel.nextSibling);
		sel.parentNode.appendChild(clone);
	})
</script>
</body>

Это да, но там много стилей прописано, в идеале вместо ID класс прописать.
Javany вне форума   Ответить с цитированием
Старый 21.05.2018, 12:13   #5
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,493
Репутация: 5308
По умолчанию

Цитата:
Сообщение от Javany Посмотреть сообщение
в идеале вместо ID класс прописать.
ну так пропишите.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 21.05.2018, 12:19   #6
Javany
Форумчанин
 
Регистрация: 15.05.2018
Сообщений: 75
Репутация: 129
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
$('option:selected',this).text();
Stanislav, скажите, это Jquery? Я с ней очень плохо знаком. Я пробовал через getElementsByName, getElementsByClassName. Не работает. Вопрос не как сделать, а почему не получается. Листал форумы, курил мануалы, все должно работать, а не хочет. Вопрос не очень принципиальный, но для себя хочу разобраться. Банально забирал в переменную и выводил в консоль, не видит.
Javany вне форума   Ответить с цитированием
Старый 21.05.2018, 12:34   #7
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,112
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Дык :selected это не класс. Тут CSS селектор.
В современных браузерах можно без jQuery document.querySelector https://developer.mozilla.org/en-US/.../querySelector
Alex11223 на форуме   Ответить с цитированием
Старый 21.05.2018, 12:46   #8
Javany
Форумчанин
 
Регистрация: 15.05.2018
Сообщений: 75
Репутация: 129
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
document.querySelector
Так тоже пробовал. И код простой, и непонятно почему...

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну так пропишите.
Так не прописывается))

Последний раз редактировалось Вадим Мошев; 21.05.2018 в 15:05.
Javany вне форума   Ответить с цитированием
Старый 21.05.2018, 14:14   #9
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,493
Репутация: 5308
По умолчанию

Цитата:
Сообщение от Javany Посмотреть сообщение
Так не прописывается))
Как это - "не прописывается" ?! А если прописать, то что - клавиатура блокируется или током бьётся?

А если серьёзно - сделайте работающий примерчик (можно тут код, можно в песочницу код и сюда ссылку), где покажите, в чём у Вас, собственно, проблема.
Вот я лично не понимаю, что у Вас не получается.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 21.05.2018, 15:13   #10
Javany
Форумчанин
 
Регистрация: 15.05.2018
Сообщений: 75
Репутация: 129
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
можно в песочницу код и сюда ссылку
Вот, в песочнице.
http://plnkr.co/edit/QmRq5qdmEAXbZe0kydoI?p=preview
Проблема в строке 57, var sel = document.getElementById('selCol');
В песочнице рабочий вариант, но элемент я забрал по Id, после клонирования я получаю много элементов с одинаковым Id, вместо Id нужно забрать по имени тега или по классу, а у меня не получается.
На кнопку"отправить запрос " не смотрите, там php отрабатывает. Главное клонировать.

Последний раз редактировалось Javany; 21.05.2018 в 15:15.
Javany вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JSP + HQL: как в блоке <select></select> вызвать метод из DAO? Blondy Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 4 01.06.2013 15:54
В зависимости от выбора в Select изменить значения другого Select Tayfun HTML и CSS 3 18.08.2011 00:05
Select t1.N,t1.FIO,(select t2.acc from t2 where t2.type=1) from t1,t2 mavlon_m SQL, базы данных 2 17.09.2009 15:28
Забрать файлы по сети Darth Работа с сетью в Delphi 7 29.06.2008 23:04
Передача значения в <select></select> kkkggg Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 06.09.2007 00:26


15:30.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru