Цикл PHP foreach, уникальный идентификатор ‹select› для getElementById

Меня интересует получение $option_value['price'] в строке из раскрывающегося списка, а не . Использование .value возвращает более позднее.

У меня есть меню выбора, созданные в цикле foreach(). Выпадающие списки будут содержать варианты цен. Я пытаюсь дать каждому продукту собственный идентификатор, поэтому я могу использовать функцию javascript onChange() для обновления цен на экране.

Тег выбора выглядит следующим образом:

 <select name="option[<?php echo $option['product_option_id']; ?>]" class="select_options" id="select_<?php echo $product['product_id']; ?>" onchange="getIt(this);">

и джаваскрипт:

function getIt(el) {
var id = el.id;
a = document.getElementById(id).text;
alert(a);   
}

Оповещение об идентификаторе дает мне номер select_some. Итак, я вижу, что он получает идентификатор. но предупреждение a дает мне [object HTMLSelectElement].

поэтому я попытался

alert(a.options.selectedIndex.value);

и стать неопознанным.

<?php if ($product['options']) { ?>
<div class="options" id="option_<?php echo $product['product_id']; ?>">
<?php foreach ($product['options'] as $option) { ?>
<?php if ($option['type'] == 'select') { ?>
<div id="option-<?php echo $option['product_option_id']; ?>" class="option select_option">    
  <select name="option[<?php echo $option['product_option_id']; ?>]" class="select_options" id="select_<?php echo $product['product_id']; ?>" onchange="getIt(this);">

    <option value=""><?php echo $text_select; ?></option>
    <?php foreach ($option['option_value'] as $option_value) { ?>

    <option value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>

    <?php if ($option_value['price']) { ?>
    (<?php echo $option_value['price_prefix']; ?><span id="newPrice"><?php echo str_replace('.00','.',$option_value['price']); ?></span>)
    <?php } ?>
    </option>
    <?php } ?>
  </select>
</div>
<?php } ?>

person Travis    schedule 09.10.2012    source источник
comment
Покажите нам сгенерированный HTML-код   -  person Nir Alfasi    schedule 09.10.2012
comment
так есть ли способ получить текст, отображаемый в раскрывающемся списке ($xx.xx), вместо значения, которое имеет опция 0,1,2,3,...   -  person Travis    schedule 09.10.2012


Ответы (4)


"Есть ли способ получить текст, отображаемый в раскрывающемся списке ($xx.xx), вместо значения?"

Я думаю, это то, что вы ищете:

function getIt(el) {
   var a = el.options[el.selectedIndex].text;
   alert(a);
}

el.selectedIndex дает вам, очевидно, индекс текущего выбранного параметра, который вы можете использовать в качестве индекса в наборе параметров, el.options, а затем получить этот параметр text. Свойство text принадлежит каждому параметру, а не выбору.

Демонстрация: http://jsfiddle.net/FCnUQ/

(Обратите внимание, что если никакая опция не выбрана, selectedIndex будет -1.)

Вам вообще не нужно использовать getElementById(), потому что у вас уже есть ссылка на элемент el.

person nnnnnn    schedule 09.10.2012
comment
Это именно то, что я хотел... Трудно правильно задать вопрос, так как я дерьмо в кодировании. - person Travis; 09.10.2012

Изменять :

  a = document.getElementById(id).text;

To:

  a = document.getElementById(id).value;

Это предупредит значение выбранного параметра.

person janenz00    schedule 09.10.2012
comment
который показывает значение опции... 0, 1, 2, 3 и так далее. Меня интересует цена: $xx.xx. Я думал, что getElementById().text дал то, что было показано в раскрывающемся списке... - person Travis; 09.10.2012

Попробуйте этот код, поставьте document.getElementById(id).value вместо document.getElementById(id).text

function getIt(id) {
 a = document.getElementById(id).value;
 alert(a);   
}
person iLaYa ツ    schedule 09.10.2012

когда вы передаете это как getit(this), вы должны кодировать так

function getIt(el) {
var id = el.id;
a = document.getElementById(id).value;
alert(el.value);   //you can directly alert like this
}
person Pragnesh Chauhan    schedule 09.10.2012