[英]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.