gpt4 book ai didi

JavaScript 范围帮助

转载 作者:行者123 更新时间:2023-11-30 23:43:14 25 4
gpt4 key购买 nike

我对 javascript 比较陌生,所以如果我问的问题完全愚蠢,请耐心等待!

我正在尝试制作一个简单的模块。在模块内部,我想要一个配置对象来保存模块的设置。我也在使用jquery。 jquery 选择器仅在直接位于主对象/模块中的函数中时才起作用。

我知道 javascript 具有功能范围,所以我很惊讶我无法在模块内的任何地方使用 jquery 选择器。

编辑:我希望能够使用 jquery 选择器直接在 configs 对象内设置所有配置。这样我就可以将所有杂乱的东西保留在一个地方,然后可以访问模块其余部分的 configs.whatever 。目前 jquery 选择器在 configs 模块中不起作用。

    var OB = function() {

var configs = {
'mode' : 'test',
'numOfSelects' : $('.mySelect').find('select').length, // This doesnt work
}

var getMode = function() {
return configs.mode;
}

function init() {
alert(configs.numOfSelects); // This alerts 0 until the following line
alert($('.mySelect').find('select').length); // This correctly alerts 2
};

var handlers = {
successHandler : function() {
alert("Success");
},
errorHandler : function() {
alert("error");
}
}

return {
init : init,
getMode : getMode
}

}( );

$(document).ready(function(){
OB.init();
});

最佳答案

并不是说 jQuery 不在范围内,而是代码在您认为执行时并未执行。变量 config 在执行匿名函数 (var OB = function() {}()) 时定义。 DOM 还没有准备好,所以 DOM 遍历没有找到任何东西。当您在 init() 中执行 DOM 遍历时,只有在 $(document).ready() 处理程序中显式调用它时,才会执行该操作,此时DOM 已设置。这就是您所看到的差异。

关于JavaScript 范围帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3963601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com