我有点情况。基本上我是在JavaScript数组中添加一个项目,我在选择框更改时填充。但问题是当我输入0时,它应该从数组中删除。
这是代码
var addon = new Array();
function updateAddons(){
addon.length=0;
var plan = new Array;
var planQty = new Array;
plan.length=0;
planQty.length=0;
for(var j =0 ; j< 3; j++){
$("select[name='addon_"+j+"[]'] option:selected").each(function(){
var item = {
product_name : $(this).attr('pn'),
product_cost : $(this).attr('cost'),
product_id : $(this).val()
};
if(item.product_id != 0){
plan.push(item);
}
});
$("input[name='addonQty_"+j+"[]'] ").each(function(){
if($(this).val() != 0){
planQty.push($(this).val());
}
});
}
for(var i =0; i < plan.length; i++){
var item = {
product:plan[i],
product_qty:planQty[i]
}
if(item.product.product_id != 0){
addon.push(item);
}
}
}
我创建了一个jsfiddle click here来查看它。 (检查浏览器控制台是否有完整的对象。)
如果有人可以提供帮助。请解释一下你的答案。
此致
答案 0 :(得分:0)
我自己解决了。将一个artibitary数字代替0并且不添加最终数组。
由于
答案 1 :(得分:0)
代码的主要问题是以下声明:
if($(this).val() != 0)
问题是如果输入为空,则值为undefined
。在javascript中undefined
不等于0
。解决这个问题的一个简单方法是测试undefined:
if($(this).val() != 0 && $(this).val() != undefined)