2017-08-31 123 views
1

任何人都可以帮我解决这个问题吗?加载JavaScript的变量即使被加载也不能调用

如果我有这个工作示例

var Login = function() { 

var handleLogin = function() {//code here 

} 

var handleForgetPassword = function() {//code here  
} 

var handleRegister = function() {//code here 
} 

return { 
    init: function() { 

     handleLogin(); 
     handleForgetPassword(); 
     handleRegister(); 

    } 

}; 

}(); 

jQuery(document).ready(function() { 
    Login.init(); 
}); 

下面的例子给出了一个错误。即使我确定该文件已加载。我无法确定函数的范围。

<script src="javascriptLoginfile.js" type="text/javascript"></script> 
<script> 
jQuery(document).ready(function() { 
    Login.init(); 
}); 
</script> 

错误

Uncaught ReferenceError: Login is not defined at HTMLDocument. (login:160) at i (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at Function.ready (jquery.min.js:2) at HTMLDocument.K (jquery.min.js:2)

+0

也许有对被停止执行javascriptLoginFile.js一些错误之前登录完全实例? – Bardo

+0

您提到的文件与文件完全相同,除了最后的这一部分。 (函数(){ Login.init(); }); –

+0

我已验证您的代码并正在正常工作,即将功能代码登录到单独的JS文件中,并从jQuery文档准备好的HTML页面调用该函数。没有问题(在我的机器上进行本地测试)。 –

回答

1

为我工作。

var Login = function() { 
 

 
    var handleLogin = function() { //code here 
 
    console.log('handleLogin'); 
 
    } 
 

 
    var handleForgetPassword = function() { //code here  
 
    console.log('handlForgetPassword'); 
 
    } 
 

 
    var handleRegister = function() { //code here 
 
    console.log('handleRegister'); 
 
    } 
 

 
    return { 
 
    init: function() { 
 

 
     handleLogin(); 
 
     handleForgetPassword(); 
 
     handleRegister(); 
 

 
    } 
 

 
    }; 
 

 
}(); 
 

 
jQuery(document).ready(function() { 
 
    Login.init(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

-1

因为是的WebPack捆绑的一切,我无法从绑定的脚本之外调用。

我解决了这个变化:

var Login = function() { } 

要:

window.Login = function() { }