вычитая количество в JS не работает только несколько раз - PullRequest
0 голосов
/ 01 ноября 2018

Так что я новичок в JS и работаю над проектом для получения продуктов на основе информации отслеживания, а затем с помощью кода UPC, я получаю содержимое пакета из AJAX-вызова php, затем добавляю элементы в массив в js формат объекта, когда UPC сканируется из элемента в пакете, он должен вычесть один из содержимого пакета, проблема, которую функция, которую я сделал для вычитания, работает только на некоторых объектах элемента, а не на всех, и я не могу понять, почему, нет различий между объектами, что я делаю не так

вот мой код

//define array
`var packageContent = [];

//create item objects
var Item = function(name, upc, weight, qty) {
    this.name = name
    this.upc = upc
    this.weight = weight
    this.qty = qty
}

//with php info add items with the tracking to the package content
function addItemToPackage(name, upc, weight, qty) {
    for (var i in packageContent) {
        if (packageContent[i].upc == upc) {
            packageContent[i].qty += qty;
            return;
        }
    }
    item = new Item(name, upc, weight, qty);
    packageContent.push(item);
}`

//Package Content Lookup
function initialInboundScan(tracking) {
    //define tracking var
    var tracking = tracking;
    //AJAX request to PHP to find items assosiated with tracking #
    $.ajax({
    url : "./includes/process.php",
    method : "post",
    data : {inbound_tracking_scan:1,tracking:tracking},
    success : function(data)
        {
        var items = JSON.parse(data);
        //Loop the respone call addItemToPackage()
        for(var i in items){
        addItemToPackage(items[i].product_name, items[i].UPC, items[i].SKU, parseInt(items[i].qty)) 
        } 
        return packageContent;
        }
    });
}

// remove item from package
function remove(upc) {
    var upc = upc;
    for (var i in packageContent) {
        if (packageContent[i].upc == upc) {
            packageContent[i].qty --;
        if (packageContent[i].qty == 0) {
        packageContent.splice(i , 1);   
        }     
        }
    }
}

функция remove () не будет работать с элементами, созданными с помощью initialInboundScan (); только элементы, созданные напрямую с помощью addItemToPackage (), и я не могу понять, почему функция remove () не вычитает из qty

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...