更改时从Javascript数组中删除项
我有一点情况。基本上,我是在JavaScript数组中添加一个项,在选择框更改时填充该项。但问题是当我输入0时,它应该从数组中删除 这是密码更改时从Javascript数组中删除项,javascript,Javascript,我有一点情况。基本上,我是在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(va
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);
}
}
}
var addon=new Array();
函数updateAddons(){
addon.length=0;
var计划=新数组;
var planQty=新数组;
计划长度=0;
计划数量长度=0;
对于(var j=0;j<3;j++){
$(“选择[name='addon][j+“[]”选项:选中”)。每个(函数(){
变量项={
产品名称:$(this.attr('pn'),
产品成本:$(本).attr(“成本”),
product_id:$(this.val())
};
如果(item.product_id!=0){
计划、推动(项目);
}
});
$(“输入[name='addonQty][uj+“[]”])。每个(函数(){
如果($(this).val()!=0){
planQty.push($(this.val());
}
});
}
对于(变量i=0;i
我已经创建了一个JSFIDLE来查看它。(检查浏览器控制台以获取完整的对象。)
如果有人能帮忙。请解释你的答案
我自己解决了。将二进制数替换为0,并且不在最终数组中添加
谢谢您的代码的主要问题是以下陈述:
if($(this).val() != 0)
问题是,如果输入为空,则值为未定义。在javascript中,未定义的不等于0
。解决此问题的一个简单方法是测试未定义的:
if($(this).val() != 0 && $(this).val() != undefined)
谢谢你的回复。但现在我面临另一个问题,问题是在向数组中添加项时,如果产品id为0,则会破坏数组,无法在其旁边添加项。@MurtazaHussain我创建了一个更新的JSFIDLE,以显示如何使其工作(每次更新后记录到控制台),谢谢。但是现在从第二个下拉列表中选择任何项目,并在相应的文本框中输入3。现在你就知道我面临什么问题了。