PHP foreach循环,getElementById的唯一<select> id </select>

时间:2012-10-09 04:23:17

标签: php javascript drop-down-menu getelementbyid unique-id

我感兴趣的是从下拉列表中获取$ option_value ['price']字符串,而不是。使用.value返回更晚的。

我选择了在foreach()循环中创建的菜单。下降将持有价格选择。我试图给每个产品它自己的id,所以我可以使用javascript onChange()函数来更新屏幕上的价格。

select标签如下所示:

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

和javascript:

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

警告id给我select_some号码。所以我可以看到它正在获得id。但警告a给我[对象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 } ?>

4 个答案:

答案 0 :(得分:3)

更改:

  a = document.getElementById(id).text;

要:

  a = document.getElementById(id).value;

这将提醒所选选项的值。

答案 1 :(得分:1)

尝试使用此代码,将document.getElementById(id).value代替document.getElementById(id).text

function getIt(id) {
 a = document.getElementById(id).value;
 alert(a);   
}

答案 2 :(得分:1)

  

“有没有办法让我在下拉列表中显示文字($ xx.xx),而不是值?”

我认为这就是你要找的东西:

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

el.selectedIndex为您提供了当前所选选项的索引,您可以将其用作选项集el.options的索引,然后获取该选项的texttext属性属于每个选项,而不属于select。

演示:http://jsfiddle.net/FCnUQ/

(请注意,如果未选择任何选项,selectedIndex将为-1。)

您根本不需要使用getElementById(),因为您已经引用了该元素el

答案 3 :(得分:0)

当你像getit(this)那样传递时,你应该像这样编码

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