Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2018, 12:14   #1
Javany
Пользователь
 
Регистрация: 15.05.2018
Сообщений: 75
По умолчанию Не получается забрать 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, 12:27   #2
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
с одинаковым ID, что само по себе плохо
это не то что плохо, это не допустимо! используйте классы (и то они потребуются если Вам нужно будет пробежаться по выбранным элементам) а затем забирайте через
Код:
$('option:selected',this).text();
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 18.05.2018 в 12:30.
Stanislav вне форума Ответить с цитированием
Старый 18.05.2018, 14:41   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

кстати, нет никаких проблем в том, чтобы сменить 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, 10:50   #4
Javany
Пользователь
 
Регистрация: 15.05.2018
Сообщений: 75
По умолчанию

Цитата:
Сообщение от 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, 11:13   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

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

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

Дык :selected это не класс. Тут CSS селектор.
В современных браузерах можно без jQuery document.querySelector https://developer.mozilla.org/en-US/.../querySelector
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.05.2018, 11:46   #8
Javany
Пользователь
 
Регистрация: 15.05.2018
Сообщений: 75
По умолчанию

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

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну так пропишите.
Так не прописывается))
Не задавай вопрос, если не знаешь что делать с ответом...

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

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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