0

我一直在尝试利用显示模块模式,并认为我会为非 css3 自定义滚动条创建一个函数。

var sb=(function($){

//Private
var settings=function(props){
    return{
        wrapper: props.wrapper ? document.getElementById(props.wrapper):null,
        thumb: props.thumb ? document.getElementById(props.thumb):null,
        track: props.track ? document.getElementById(props.track):null,
        left: props.left ? props.left:null,
        right: props.right ? props.right:null,
        contentWidth: props.contentWidth? props.contentWidth:null
    };
};

var LOG=function(input){
    console.log(input)
};

//Object Literal
return{
    Log:LOG,
    settings:settings
};

})(jQuery);

以上是模块。我正在设置这样的值:

window.onload=function(){
    sb.settings({wrapper:'bodyWrapper',thumb:'thumb',track:'track'});
}

但是,当我尝试对其进行测试时,我不断收到“未定义”和其他错误。在模块内部运行console.log(settings.wrapper)返回undefined. 我真的不知道我要去哪里错了,所以任何帮助将不胜感激。提前致谢

4

1 回答 1

0

在模块内部运行console.log(settings.wrapper)返回undefined.

当然,因为settings是函数对象(它没有wrapper属性)而不是对象在被调用时已经返回。你似乎想要

var sb = (function(){

    // private variables
    var settings = {};

    // public (exported) properties
    return {
        log: function(input) {
            console.log(input);
        },
        getSetting: function(name) {
            return settings[name];
        },
        setSettings: function(props){
            settings = { // assign to the private variable!
                wrapper: props.wrapper ? document.getElementById(props.wrapper) : null,
                thumb: props.thumb ? document.getElementById(props.thumb) : null,
                track: props.track ? document.getElementById(props.track) : null,
                left: props.left || null,
                right: props.right || null,
                contentWidth: props.contentWidth || null
            };
            return true;
        }
    };

})();

window.onload = function(){
    sb.setSettings({wrapper:'bodyWrapper',thumb:'thumb',track:'track'});
    sb.log(sb.getSetting("wrapper"));
}
于 2013-07-31T14:19:58.657 回答