jQuery从每个循环中获取数据并存储在全局变量中

时间:2017-11-10 15:27:04

标签: jquery loops global-variables each

在添加到购物车之前,我正在编写一些代码来获取产品ID和数量。我循环遍历数量大于0的每个产品,然后将一些信息存储在数据属性中。

我遇到的问题是输出所有数据。这是我的代码:

jQuery( ".productList .catQuantity" ).each(function( index ) {
    var productID = jQuery(this).attr('data-product_id');
    var productQu = jQuery(this).attr('data-quantity');   
    if(productQu > 0){
        //console.log(productID+':'+productQu+',');
        window.allProducts = (productID+':'+productQu+',');
    }
});
console.log(allProducts);

因此,上面抓取产品ID和数量并将其存储在全局变量中。当我在console.log变量时,只有最后添加的产品包含在变量中。

为什么会这样?

2 个答案:

答案 0 :(得分:2)

您应该使用+=将它们附加到变量,否则变量allProducts将在循环的每次迭代中被覆盖:

window.allProducts += (productID+':'+productQu+',');

希望这有帮助。

答案 1 :(得分:0)

使用数组存储所有产品,因为您在最后一项之后附加了不必要的逗号。然后,如果需要,只需将此数组转换/显示为字符串:

var allProducts = []

jQuery( ".productList .catQuantity" ).each(function( index ) {
  var productID = jQuery(this).attr('data-product_id')
  var productQu = jQuery(this).attr('data-quantity')  
  if (productQu > 0) {
    window.allProducts.push(productID + ':' + productQu)
  }
})

console.log(allProducts.toString())