javascript - 脚本不适用于 Internet Explorer - 使用 querySelectorAll 进行简单的 dom 抓取并插入数组

标签 javascript internet-explorer

我对 Javascript 不太有经验,所以当我设法创建这个脚本时,我感觉非常好。但是,唉,它似乎在 Internet Explorer 上失败了,我不知道为什么。

谁能发现 IE 不喜欢这个脚本的地方吗?

从我们的 Google Analytics 内部来看,该脚本在 IE 9 和 11 上失败了。

function() {

// build products object
var prods = [];
var count = document.querySelectorAll('.txtStayRoomLocation').length;

for(i=0; i < count; i++) {

    //set granular vars
    prd = {};
    var brand = document.querySelectorAll('.txtStayRoomLocation')[i].textContent;
    var name = document.querySelectorAll('.txtStayRoomDescription')[i].textContent;
    var price = document.querySelectorAll('.txtStayRoomSplashPriceAmount')[i].textContent;
    var quantity = window.session_context_vars.BookingContext.Booking.ReservationLineItems[i].ReservationCharges.length/2;

    //add to prd object
    prd.brand = brand;
    prd.name = name;
    prd.price = price;
    prd.quantity = quantity;

   //add to prods array
   prods.push(prd);
}

   var ecommerceData = {
    'ecommerce': {
      'purchase': {
       'actionField': {'id': {{transaction id}},
                       'revenue': {{transaction amount}},
                       'tax': {{tax}}},

       'products': prods
      }
    }
   };
   return ecommerceData;
}

最佳答案

关于 @romuleald 所说的,这可能是构建代码的更好的方法。它消除了每次执行 for 循环时查找相同数组的需要。

function() {
// build products object
var prods = [];
var brand = document.querySelectorAll('.txtStayRoomLocation');
var name = document.querySelectorAll('.txtStayRoomDescription');
var price = document.querySelectorAll('.txtStayRoomSplashPriceAmount');

for(i=0; i < brand.length; i++) {

//set granular vars
var prd = {};

//add to prd object
prd.brand = brand[i].textContent;
prd.name = name[i].textContent;
prd.price = price[i].textContent;
prd.quantity = window.session_context_vars.BookingContext.Booking.ReservationLineItems[i].ReservationCharges.length/2;;

//add to prods array
prods.push(prd);
}

var ecommerceData = {
'ecommerce': {
  'purchase': {
   'actionField': {'id': {{transaction id}},
                   'revenue': {{transaction amount}},
                   'tax': {{tax}}},

   'products': prods
  }
}
};
return ecommerceData;
}

关于错误,您能提供更多详细信息吗?调试器中抛出什么错误?

关于javascript - 脚本不适用于 Internet Explorer - 使用 querySelectorAll 进行简单的 dom 抓取并插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684553/

相关文章:

javascript - 为什么我没有收到警告 "a promise was created in a handler but was not returned from it"?

javascript - 动态插入的 CSS(通过链接)在框架加载后应用

javascript - jQuery 轮播 "this"上下文未传递到 .animate 回调中

internet-explorer - 能否在IE7中关闭XSS保护,让内网应用程序知道异地IFRAME的内容?

asp.net ScriptManager 启用历史 ="true"InvalidOperationException

javascript - 在 JavaScript 中,正则表达式是否在编译代码中求值?

javascript - 如何将 InMemoryUploadedFile 上传到我的 S3 存储桶?

javascript - JS 代码使 IE9 和 Safari 卡住并且在 Opera 中不起作用?

javascript - IE 的 ArrayBuffer.prototype.slice 垫片?

internet-explorer - CSS3 动画在 IE9 中不工作