繁体   English   中英

变量未定义

[英]Variable is Undefined

<!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>

当在window.onload调用以上命令时,为什么bod返回undefined?

更改为

window.onload = lbp.init;

当您编写window.onload = lbp.init() ,您正在调用 init函数,并将返回的任何内容分配给window.onload
因此,该函数被立即调用(在加载窗口之前),并且您将undefined分配给window.onload (因为init不返回任何内容)

您需要将init函数本身分配给onload而不调用它。

您的代码需要一些柚木,这是一个整体解决方案:

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吗? 不是setBgcolor还是其他东西?

编辑

更改以下代码行:

window.onload = lbp.init();

对此:

window.onload = lbp.init;

您当前正在将lpd.init()的结果分配给onload ..您只需要分配引用即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM