Обработка Select
Есть два вопроса по select
Вопрос 1. Мне нужно забрать выбранное значение в селекте и потом вывести его в определенном месте страницы. Делаю так: var z=document.cart_quantity.nameSelect.value; В таком виде все работает отлично, значение получаю. Проблема в том, что скрипт может генерировать несколько селектов на странице. И какой-то веселый программист не придумал ничего лучше чем присваивать им имена вида: id[1] - первый селект, id[2] - второй, и т.д. Забирать значения у селекта так: var z=document.cart_quantity.id[1].value; не получается. Т.к. ява думает, что это значение массива. Присваивание значения массиву результата также не дало. Есть какой-то выход из данной ситуации? Изменить вид вывода имени селекта - плохой вариант, т.к. это движок магазина и придется ковырять кучу скриптов куда передаются значения. Вопрос 2. Как сделать, чтобы при загрузке страницы в определнном месте уже выводилось первое значение селекта? Строго не судите. С JS общаюсь второй день. :rolleyes: |
1) document.cart_quantity.elements['id[1]'].value
2) находишь select (проверяешь, что он уже существует если надо); достаешь из него первое значение; вставляешь его куда надо |
не понял про второй вопрос. Можно немного поподробнее?
По поводу первого - все заработало "на ура"! Огромное спасибо! :dance: |
я тоже про второй вопрос не понял скорее всего, поэтому написал как понял
|
Там какой смысл. Это сайт интернет-магазин.
Для товара есть разные атрибуты. Допустим человек может выбрать цвет одежды. В зависимости от выбора цвета - меняется цена товара (основная цена + цена за цвет). Когда страница загружается цена не показывается, т.к. скрипт не знает какой цвет выбран. Цена появляется только после выбора цвета товара из селекта. Причем сразу первое значение его почему-то выбрать невозможно. |
часть браузеров сами выберут первое значение (насколько я помню), для остальных добавляешь selected к первому элементу. Разве не работает?
|
С selected не получится. Список формирует php функция. Она также формирует все остальные выпадающие менюхи на сайте. Сделать тупо другую функцию - тоже не вариант. Если делаешь другую - товары не отправляются в корзину, при оформлении заказа невидно выбранных атрибутов и т.д. Тоесть при смене функции придется ковырять много скриптов и править их.
Была у меня идея сделать через onLoad запуск функции передающий текущее значение селекта, но в IE всплывает окошко "заблокировать небезопасный элемент?" Хотелось бы без этого, т.к. большинство народа ткнет да, и тем самым цену на товар не увидят. |
в большинстве случаев "выбирать" пункт с помощью php - самый лучший вариант. У тебя я пока не заметил причин делать это с помощью javascript
|
Спасибо. Решил те проблемы. Осталась последняя и самая глупая. Но мозг у меня уже кипит, поэтому придумать как реализовать не могу.
Задача: function rePrice(){ var priceO="1200 руб."; //вывод цены "по умолчанию" var priceOld=parseFloat(priceOld); var a3 = [0.0000, "-"]; //вывод массива с элементами для 1ого атрибута var a4 = [600.0000, "+"]; //вывод массива с элементами для 2ого атрибута var z=document.cart_quantity.elements['id[1]'].value; //передача значения из select var newPrice=priceOld + a.z[0]; // складавание цены "по умолчанию" и цены выбранного через селект атрибута var myElement = document.getElementById("newBlock"); myElement.innerHTML = newPrice;} Подскажите как в строке var newPrice=priceOld + a.z[0]; выводить значение "z". Или может какой-то более лучший способ получения данных атрибутов, с последующим складыванием их с начальной ценой. :( |
не знаю, что у тебя там a и z, но у элементов формы есть атрибут value
p.s. стоит еще делать проверки, что в полях указана корректная информация |
Часовой пояс GMT +3, время: 19:48. |