脚本不适用于 Internet Explorer - 简单 dom 使用 querySelectorAll 抓取并推入数组
script not working with internet explorer - simple dom scrape with querySelectorAll and push into array
我对 Javascript 不是很有经验,所以当我设法创建这个脚本时我感觉很好。但是,唉,它似乎在 Internet Explorer 上失败了,我不知道为什么。
谁能找出 IE 不喜欢此脚本的地方?
从我们的 Google 分析内部来看,此脚本在 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 上失败了,我不知道为什么。
谁能找出 IE 不喜欢此脚本的地方?
从我们的 Google 分析内部来看,此脚本在 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;
}
关于错误,您能给我们更多的细节吗?调试器抛出了什么错误?