【发布时间】:2015-07-04 10:11:02
【问题描述】:
我在跨浏览器兼容性和废弃 dom 方面遇到了困难。 我在电子商务交易中添加了数据分析跟踪,以便获取每次购买的产品和交易金额。
最初我使用document.querySelectorAll('#someId')[0].textContent 来获取产品名称,这对于除 Internet Explorer 之外的所有浏览器都运行良好。
花了一些时间才发现是 .textContent 部分导致了 ie 问题。
昨天我将.textContent 更改为.innerText。从内部分析来看,ie 的问题似乎已经解决,但现在 Firefox 失败了。
我希望在不编写 if 语句来检查 .textContent 或 .innerText 的功能的情况下找到解决方案。
有没有跨浏览器解决方案.getTheText?
如果不是,最好的解决方法是什么?有简单的解决方案吗? (鉴于我在脚本方面的知识和经验,我问是有限的)
** 添加以下 cmets ** 如果这是我的代码块:
// build products object
var prods = [];
var brand = document.querySelectorAll('.txtStayRoomLocation');
var name = document.querySelectorAll('.txtStayRoomDescription');
var price = document.querySelectorAll('.txtStayRoomSplashPriceAmount');
for(var i = 0; i < brand.length; i++) {
//set granular vars
var prd = {};
//add to prd object
prd.brand = brand[i].innerText;
prd.name = name[i].innerText;
prd.price = price[i].innerText;
prd.quantity = window.session_context_vars.BookingContext.Booking.ReservationLineItems[i].ReservationCharges.length/2;;
//add to prods array
prods.push(prd);
}
如果我理解了 cmets 的语法和评论中链接的问题,我应该这样做:
// build products object
var prods = [];
var brand = document.querySelectorAll('.txtStayRoomLocation');
var name = document.querySelectorAll('.txtStayRoomDescription');
var price = document.querySelectorAll('.txtStayRoomSplashPriceAmount');
for(var i = 0; i < brand.length; i++) {
//set granular vars
var prd = {};
//add to prd object
prd.brand = brand[i].textContent || brand[i].innerText;
prd.name = name[i].textContent || name[i].innerText;
prd.price = price[i].textContent || price[i].innerText;
prd.quantity = window.session_context_vars.BookingContext.Booking.ReservationLineItems[i].ReservationCharges.length/2;;
//add to prods array
prods.push(prd);
}
那么使用或与双栏|| 一起分配第一个非空值?
【问题讨论】:
-
我通常只写
element.textContent || element.innerText。 -
您是否有理由不只是使用像 jQuery 这样的 DOM 包装库?
-
@JoshCrozier 感谢您的提示,我将根据您的反馈在我的问题中添加几行。在 Korvin 是的,有 - 这是因为我是新手,现在不知道那是什么
-
@Doug Firr elem.textContent || elem.innerText 是正确的方法,这是 jQuery 实现其 lib 文本函数的方式,对您的最后一个问题是,您可以将 ( ) 放在您的 elem.textContent || elem.innerText 为 (elem.textContent || elem.innerText)
标签: javascript innerhtml innertext