我在下面有以下函数返回错误
未定义
我不知道为什么这是因为我在我的第一个for循环中没有返回undefined。如果我将第二个forloop更改为for(var j = 0 ....那么它可以工作。任何人都在意解释为什么会这样?
;(function (window, document, undefined) {
'use strict';
var DOMState = document.readyState;
if (DOMState === 'interactive' || DOMState === 'complete') {
setTimeout(init, 250);
} else if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', init);
}
function init() {
var links = $('#list_of_recs a');
for (i=0;i<links.length;i++) {
var href = links[i].href;
var campaignCode1 = "?intcam=ON_D_homepage_recently_viewed";
var newHref = href + campaignCode1;
links[i].href = newHref;
}
var recTotalDevices = $('#list_of_recs .one_image');
for (j=0;j<recTotalDevices.length;j++) {
var aLinks = $('#list_of_recs a')[j];
var link = aLinks.href;
var newLink = link.replace("upg-","");
var newLinknew = newLink.replace("additional-line","");
aLinks.href = newLinknew;
}
}
})(window, document);
答案 0 :(得分:2)
JavaScript严格模式阻止使用尚未声明的变量。您尚未声明j
,这就是您收到错误的原因。
至于为什么您没有收到i
的错误,这很可能是因为您网页中的其他代码声明了全局i
变量。
你应该宣布两者。
答案 1 :(得分:0)
如果没有页面上运行的任何其他脚本的完整上下文,则很难确定,但页面上可能还有另一个脚本包含i = 0的全局作用域,因为它是一种常见的约定。
我建议你放一个
var i=0,j=0;
在函数开头确保循环中引用了本地化变量。这比将var放在for()循环顶部
更好