jQuery DOM元素值神秘地减少

时间:2016-05-30 10:44:57

标签: javascript jquery

我甚至不确定如何解释我所面临的问题,因为这很奇怪。

我有一个按钮点击事件,如下面的代码

$('body').on('click', '#btnAddCart', function(e){
    e.preventDefault();
    if ($(":checkbox[name='app_chk']", '#apps_container').is(":checked"))
    {
        $('#alert').html("");
        console.log(localGet('cart'));
        var arr = [];
        var items = [];
        var subtotal = $('#apps_subtotal').text().trim();
        var total = $('#apps_total').text().trim();
        var cart = localGet('cart');
        var flag = 0;
        var app_id, index, price, name, i_parent, i_parent_name;
        $(":checkbox[name='app_chk']:checked").each(function() {

            index = $('[name=app_chk]').index(this);
            price = $('[name=app_price]:eq('+index+')').val();
            name = $('[name=app_name]:eq('+index+')').val();
            i_parent = $('[name=i_parent]:eq('+index+')').val();
            i_parent_name = $('[name=i_parent_name]:eq('+index+')').val();
           // app_id = $('[name=app_id]:eq('+index+')').val();
            app_id = $('[name=app_id]:eq('+index+')').val();
            console.log('index: ' + index);
            console.log('id: ' + app_id);
            console.log('i_parent: ' + i_parent);

            var position = checkedInLocalStorage('cart', app_id);

            if(cart !== null){//the item with the same id exists
                console.log("pos: "+position);
                if(position > -1){
                    //perform update
                    cart[0].items[position].id = app_id;
                    cart[0].items[position].price = price;
                    cart[0].items[position].name = name;
                    cart[0].items[position].i_parent = i_parent;
                    cart[0].items[position].i_parent_name = i_parent_name;
                }else{
                    cart[0].items.push({
                        id : app_id,
                        i_parent : i_parent,
                        price : price,
                        name : name,
                        i_parent_name : i_parent_name
                    });
                    flag = 1;
                }
            }else{
                items.push({
                    id : app_id,
                    i_parent : i_parent,
                    price : price,
                    name : name,
                    i_parent_name : i_parent_name
                })
            }

        });

        if(cart === null) {
            arr.push({
                items: items,
                subtotal: subtotal,
                total: total
            });
            console.log(arr);
            localStore('cart', arr);
        }else{
            cart[0].subtotal = subtotal;
            cart[0].total = total;
            localStore('cart', cart);
            console.log(cart);
        }

        displayCart();
        $('#cart_wrapper').addClass('visible');
        localStorage.removeItem('apps');
    }
    else
    {
        showError('Please select at least one app to add to cart');
    }

});

我不知道为什么每次点击按钮app_id时同一对象的btnAddCart值减1,同时其他元素的值很好并且不会改变。没有任何操作可以更改代码中的app_id值。

我还附上了测试日志,以显示同一索引的app_id值的变化。

有谁知道导致问题的原因是什么?

testing log

1 个答案:

答案 0 :(得分:0)

似乎变量app_id是保留变量。将dom的名称和变量名称更改为app_idx

后,一切正常