变量未定义
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<script type="text/javascript" src="lb-core.js"></script>
<script type="application/javascript">
var lbp = {
defaults: {
color: "blue"
},
init: function(config) {
if(config) {
for(prop in config){
setBgcolor.defaults[prop] = config[prop];
}
}
var bod = document.body;
bod.style.backgroundColor = setBgcolor.defaults.color;
}
}
window.onload = lbp.init();
</script>
</HEAD>
<body>
<div id="container">test</div>
</body>
</HTML>
为什么bod在window.onload被调用时返回undefined?变量未定义
您的代码需要一些teaks,这里是一个整体的解决办法:
var lbp = {
defaults: {
color: "blue"
},
init: function(config) {
if(config) {
for(prop in config){
lbp.defaults[prop] = config[prop];
}
}
var bod = document.body;
bod.style.backgroundColor = lbp.defaults.color;
}
}
window.onload = lbp.init;
上有人呼吁init
瞬间,因为window.onload = lbp.init()
被分配结果lbp.init
到的onload功能,不分配实际功能,这是固定的。
此外,不知道其中setBgcolor
来自您的代码,我相信你的意思是lbp
在这里,它工作在上面的相同的代码,给它一个测试。
试试这个:
var bod = document.body;
我不知道为什么bod
回来在你的代码为未定义..它在Chrome对我的作品。你运行什么浏览器?
另外,你确定它是bod
这是undefined?不是setBgcolor
还是别的?
编辑:
更改这行代码:
window.onload = lbp.init();
要这样:
window.onload = lbp.init;
您目前正在分配LPD的结果 。 init()到onload
..你只需要分配引用。
将其更改为
window.onload = lbp.init;
当你写window.onload = lbp.init()
,你是调用的init
功能,并指派不管它返回到window.onload
。
因此,函数被立即称为(在窗口加载之前),并且您将undefined
指定为window.onload
。 (因为init
不返回任何内容)
您需要将init
函数本身分配给onload
而不调用它。
谢谢,你是正确的slaks :) – Matrym 2010-04-26 20:01:58
如果您还发布了更多的Javascript和HTML,这将有所帮助。一种可能性是你的代码在onload处理程序中不运行,而是在解析头部中的脚本标记(在看到body标记之前)时运行。 – Pointy 2010-04-26 19:53:06
试着把你的脚本放在body标签后面。 – Kasturi 2010-04-26 20:00:13