【发布时间】:2012-11-27 10:14:48
【问题描述】:
我有一个动态定位背景图像的 javascript 函数:
window.onload = function() {
bw = document.getElementsByClassName("BottomWrapper");
if (bw.length===0){
bw = document.getElementsByClassName("BottomWrapper2");
}
pos = window.innerWidth/2 - 490.5;
bw=Array.prototype.slice.call(bw);
bw[0].style.backgroundPosition="center 0px, " + pos + "px 0px";
};
它有效。但是如果我命名相同的函数并运行它:
function position() {
bw = document.getElementsByClassName("BottomWrapper");
if (bw.length===0){
bw = document.getElementsByClassName("BottomWrapper2");
}
pos = window.innerWidth/2 - 490.5;
bw=Array.prototype.slice.call(bw);
bw[0].style.backgroundPosition="center 0px, " + pos + "px 0px";
};
position();
我得到错误:
TypeError: Cannot read property 'style' of undefined
我很困惑。为什么第一个函数有效,第二个无效?
【问题讨论】:
-
你问
window.onload做什么? -
window.onload = position();
-
@SReject:差不多。删除
()。 -
@Craig 通过删除“坏”函数并仅按名称使用“好”函数来简化问题;例如
window.onload = position与position()相比如何。提取position的定义消除了“相同”函数的重复和“差异”的潜在来源。一旦完成,就可以安全地论证执行上下文才是最重要的,或者是否有其他问题。 (另外,我建议使用局部变量来避免污染。) -
糟糕。我的意思是,没有
()'s
标签: javascript function typeerror