如何更改选择选项下拉列表中的数据

时间:2013-05-05 03:29:51

标签: javascript json

需要一些小帮助来更改所选选项的数据。

数据首先从JSON结果填充到下拉选项列表,同样的JSON是需要更改的第二个数据,从下拉列表中选择选项。

我希望操作系统在选择商店时更改价格。

这是我的javascript代码:

    $(function() {
    var pricestore = [{"product_id":"1","store_id":"1","price":"120.00","sequence":"0","id":"1","parent_id":"0","name":"Store 1","email":"store1@store1.com"},{"product_id":"1","store_id":"2","price":"140.00","sequence":"0","id":"2","parent_id":"0","name":"Store 2","email":"store2@store2.com"}];
    $.each(pricestore, function(i, option) {
        $('#sel').append($('<option/>').attr("value", option.id).text(option.name));    
    }),
    //Trying to populate the price on div id
    $$('#price-store').each(function(el) {
        el.innerHTML = pricestore;
        });
})

这是获取数据的HTML

<select id="sel"></select>
<div id="price-store"></div>

这里也是关于jsfiddle

的一个例子

http://jsfiddle.net/A386B

感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

检查: -

Demo

根据我对您的问题的理解,您需要在下拉值更改时显示div中的价格。您可以使用以下方法。您需要在dropdown上使用更改事件。

此方法使用所选选项元素的Index(),并从JSON检索相应的记录。

 $('#sel').change(function () {
        $('#price-store').text(
                pricestore[$('option:selected', this).index()].price);
    });

另一种方法是在选项元素上使用data-attributes来存储相应的价格,并在下拉值更改时检索它。

Demo

 $('#sel').append($('<option>',
                       {
                           "value" :option.id,
                           "data-price" :option.price
                       }).text(option.name));
}),
$('#sel').change(function () {
    $('#price-store').text($('option:selected', this).data('price'));
});

答案 1 :(得分:0)

您使用$$选择div而不是$$('#price-store')
传递给.each()方法的函数的第二个参数是元素而不是第一个。 function(i, el) {
你为什么用.each()作为一个div? 您必须格式化pricestore中的数据才能将其显示在div中,否则您只能获得[Object object],[Object object]

答案 2 :(得分:0)

或者这个:

<div id="price-store"></div
<form>
    <select id="price">
        <option>120</option>
        <option>140</option>
        <option>160</option>
    </select>
</form>

$('#price').change(function() {
 $('#price-store').text($('#price').find(":selected").text());
});

http://jsfiddle.net/XcSZL/8/