繁体   English   中英

Javascript数组更新字段,为数组中的每个项目设置值

[英]Javascript array updating field, setting value for every item in array

我正在处理一个更新表单,该表单应该在输入字段中获取价格并将其更新为ID为唯一ID的数组。 它有一个问题,即它正在更新最后一个价格,而不是以前的设定价格。

<input placeholder="None" class="price" id="114157">
<input placeholder="None" class="price" id="114158">
<input placeholder="None" class="price" id="114159">

Javascript

var objects = {};

 var array_list = {'price':false, 'tue_price':false, 'view': false, 'cinema': false, 'id': false, 'kids_price': false, 'free_seating': false, 'vip_consetions': false};
 $( ".price" ).change(function() {
    var id = $(this).attr('id');
    if (objects[id]) {
        objects[id]['price'] = $(this).val();
    }else{
        objects[id] = array_list;
        objects[id]['price'] = $(this).val();
        objects[id]['id'] = $('.price[id='+id+']').val();
    }
    console.log(objects);
});

我在这里设置了一个小提琴示例: https : //jsfiddle.net/natcdgkq/

问题是您只有一个array_list (名称不佳)对象的副本。 因此,每次分配它并更改值时,它始终是相同的对象引用。 您可以执行本质上是副本的操作:

var objects = {};

var array_list = {
    'price': false,
    'tue_price': false,
    'view': false,
    'cinema': false,
    'id': false,
    'kids_price': false,
    'free_seating': false,
    'vip_consetions': false
};

$(".price").change(function() {
    var id = $(this).attr('id'),
        o = objects[id];
    if (!o) {
        objects[id] = o = jQuery.extend({}, array_list);
    }
    o.price = $(this).val();
});

我省略了有关id的部分,这实际上没有多大意义。 您已经有了要查询的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM