JavaScript 错误 "Cannot read property"

标签 javascript jquery google-analytics

  var dataLayer =[{
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345',
        'affiliation': 'Online Store',
        'revenue': '35.43',
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      }
    }
  }
}];

我正在尝试将产品名称和价格动态添加到产品中。 这是代码:

$('.to-buy').click(function() {
    $('.sed').each(function() {
        var product_name = $(this).find('h5').text();
        var product_price = $(this).parent().siblings(".cost").text();
        dataLayer.ecommerce.purchase.products.push({
            "name" : product_name ,
            "price" :product_price
        }); 
    });
});

但我收到错误“未捕获类型错误:无法读取未定义的属性“购买””。 我期望数据层如下:

 'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345', 
        'affiliation': 'Online Store',
        'revenue': '35.43',
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      },
      'products': [{
        'name': 'Triblend Android T-Shirt',
        'price': '15.25'
       },
       {
        'name': 'Donut Friday Scented T-Shirt',
        'price': '33.75',
       }]
    }
  }

接受任何帮助。谢谢。

最佳答案

您的dataLayer是一个数组,因此尝试访问数组的属性ecommerce会返回undefined。并且访问未定义的购买会引发异常。

改用dataLayer[0].ecommerce,或将您的 dataLayer 更改为如下所示的对象:

 var dataLayer ={
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345',
        'affiliation': 'Online Store',
        'revenue': '35.43',
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      }
    }
  }
};

此外,您的 dataLayer.ecommerce.purchase.products.push 正在访问购买内的产品,但我在您的 dataLayer 中没有看到任何产品。

将属性products添加到您的dataLayer对象

var dataLayer ={
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345',
        'affiliation': 'Online Store',
        'revenue': '35.43',
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      },
      products:[] // Your are missing this
    }
  }
};

关于JavaScript 错误 "Cannot read property",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44284891/

相关文章:

javascript - jQuery 宽度和高度返回旧值

javascript - jQuery 自动完成选择填充其他字段

javascript - 无法读取未定义的属性 'Symbol(Symbol.iterator)'

javascript - Jquery - 动画作为幻灯片

javascript - 将 FormData 传递给 AJAX 调用时如何修复 HttpPostedFileBase null

regex - 需要使用正则表达式将动态网址与Google Analytics(分析)中的设置目标进行匹配

javascript - 在窗口调整大小和加载时将 div 高度与父级匹配

javascript - 使用 oncontextmenu 和 js/jquery 左键单击上下文菜单

php - 谷歌分析 PHP API : goals not found

java - Flurry Android 分析错误