我的IDE,RubyMine,说这“可能不正确”:
function update_top_up_prices_via_localStorage(){
var index = localStorage.getItem("volxs");
$('.product-inner').each(function(){
var product = this.getAttribute('data-product-miles');
var cpm = ((localStorage.getItem("cpm_by_volxs_"+product)).split(","))[index];
$(this).find('table tbody tr td').each(function(){
var top_up_miles = Number(this.getAttribute('data-topup-miles'));
var price = Number(top_up_miles * cpm * 1.06);
price = price.toFixed(2);
$(this).text('\u00A3'+price);
})
});
}
我的IDE在var top_up_miles
行上说“可能无效使用this
。这会检查javascript this
在封闭时是否与外部上下文相同。
js在Chrome和IE9中运行良好。它在IE8中不起作用。
这是错的吗?有没有更好的方法来写这个?
答案 0 :(得分:3)
RubyMine不知道$().each
使用指定的this
上下文执行传递的函数。如果您想避免该警告,请使用
$(/* ... */).each(function (i, elem) {
elem.getAttribute(/* ... */);
});
等
您的代码无法与IE8一起使用的原因可能与此无关。但是为了更好的兼容性,使用jQuery包装的函数而不是本机API函数:$(this).attr
而不是this.getAttribute
(感谢@freakish)
答案 1 :(得分:1)
它提醒您注意警告您在JavaScript中使用this
关键字时应小心谨慎,因为this
始终引用函数所有者。
要了解详情,请参阅this article on quirksmode on the JavaScript this
keyword。