在更改时从Javascript数组中删除项目

时间:2013-01-19 04:48:51

标签: 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(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来查看它。 (检查浏览器控制台是否有完整的对象。)

如果有人可以提供帮助。请解释一下你的答案。

此致

2 个答案:

答案 0 :(得分:0)

我自己解决了。将一个artibitary数字代替0并且不添加最终数组。

由于

答案 1 :(得分:0)

代码的主要问题是以下声明:

 if($(this).val() != 0)

问题是如果输入为空,则值为undefined。在javascript中undefined不等于0。解决这个问题的一个简单方法是测试undefined:

 if($(this).val() != 0 && $(this).val() != undefined)