Получение данных из нескольких select с одним name
Необходимо как то получить значения нескольких Select c одним name.
Обычной формой оно нормально работает, а если через getXmlHttpRequest(), то получает только из первого Select. <div id="qwqwqw"><div style="position:relative;">Товар 1 <select name="thisplace[]"> <option value="4">Грандпри</option> <option value="1">Золото</option> <option value="2">Серебро</option> <option value="3">Бронза</option> </select> </div><div style="position:relative;">Товар 2 <select name="thisplace[]"> <option value="4">Грандпри</option> <option value="1">Золото</option> <option value="2">Серебро</option> <option value="3">Бронза</option> </select> </div> </div> function testA(){ var ElemId = document.getElementById('qwqwqw'); var val5 = ElemId.querySelector("select[name='thisplace[]']").value; alert(val5); } Вот пример демо... http://learn.javascript.ru/play/psn4Rb |
Цитата:
Пример <!DOCTYPE html> <html> <head> <!-- <script src='http://code.jquery.com/jquery-latest.js'></script> <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> <link rel='stylesheet type=text/css href=tmp.css' /> --> <style type='text/css'> </style> <script type='text/javascript'> window.onload=function(){ var a=document.querySelectorAll('#qwqwqw [name="thisplace[]"]'); for (var i=0; i<a.length; i++) { alert(a[i].value); }; }; </script> </head> <body> <div id="qwqwqw"> <div style="position:relative;">Товар 1 <select name="thisplace[]"> <option value="4">Грандпри</option> <option value="1">Золото</option> <option value="2">Серебро</option> <option value="3">Бронза</option> </select> </div> <div style="position:relative;">Товар 2 <select name="thisplace[]"> <option value="4">Грандпри</option> <option value="1">Золото</option> <option value="2">Серебро</option> <option value="3">Бронза</option> </select> </div> </div> </body> </html> |
Благодарю Вас!
------------------------------------------------------------------------------ http://learn.javascript.ru/play/782xj - для сохранности ссылки |
А как же вы их на сервер различать будете, что кому принадлежит? А если не важно это, то зачем два списка?
|
Это же часть, всего лишь.
У меня в атрибуте data-id лежит идентификатор товара. будут отсылаться 2 строки, 1 - строка с местами, 2 - строка с ИД. Потом в php сопоставление по порядку просто. Вот например так http://learn.javascript.ru/play/TpXRb |
А причем тут атрибут data-id, если передаются значения выбранное из писков? Уж тогда thisplace[идентификатор товара] - получите один массив ключами которого и будут идентификаторы товаров.
|
Цитата:
|
Даже так? То есть есть идентичные списки, но каждый принадлежит разным источникам, и чтобы получить значения и понять у какого из источников что выбрано, нужно городить такой геморрой? Почитайте:
У меня в атрибуте data-id лежит идентификатор товара. будут отсылаться 2 строки, 1 - строка с местами, 2 - строка с ИД. И заметьте, что эти строки ничем не связаны. Ну что это как не профанация? |
thisplace - должен быть одинаковый у всех.
Так как там в форму запись идет обычным методом. Я реализую отображение выбранных елементов из селекта.1, и у каждого выбранного элемента свой селект.2 Потом выбранные товары записываются как строка из селекта.1 а места этих товаров записываются в том же порядке из селекта.2. Это все на неткате, там по другому никак не сделать вроде бы. Короче всё норм. |
Чушь это собачья. Если к примеру, получаем те же товары из корзины, и среди этого есть товары у которых изменили значения какие либо, и те что надо удалить из корзины, то могут быть два массива в итоге:
а) массив всех товаров ключами которого являются идентификаторы б) массив выбранных для удаления товаров, значения которых (или также ключи) это их идентификаторы Если пришел массив б) значит пересечением массивов удаляем из массива а) удаляемые товары. Это удобно. Зачем в вашем случае городить огород, если один массив сразу может передать информацию и о идентификаторе товара, и его выборе? |
Часовой пояс GMT +3, время: 17:10. |