-1

我有点情况。基本上我正在向 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点击这里查看。(检查您的浏览器控制台以获取完整的对象。)

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

问候

4

2 回答 2

0

我自己解决了。用一个数字代替 0,而不是添加到最终数组中。

谢谢

于 2013-01-19T05:15:30.603 回答
0

您的代码的主要问题是以下语句:

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

问题是如果输入为空,则值为undefined。在 javascriptundefined中不等于0. 解决此问题的一种简单方法是同时测试未定义:

 if($(this).val() != 0 && $(this).val() != undefined)
于 2013-01-19T05:16:25.757 回答