【问题标题】:Variable inside loaded JavaScript can't be called even though it's loaded已加载 JavaScript 中的变量即使已加载也无法调用
【发布时间】:2017-08-31 07:13:53
【问题描述】:

谁能帮我解决这个问题?

如果我有这个工作示例

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>

错误

未捕获的引用错误:未定义登录 在 HTML 文档。 (登录:160) 在我 (jquery.min.js:2) 在 Object.fireWith [as resolveWith] (jquery.min.js:2) 在 Function.ready (jquery.min.js:2) 在 HTMLDocument.K (jquery.min.js:2)

【问题讨论】:

  • 也许 javascriptLoginFile.js 有一些错误在 Login 完全实例化之前停止执行?
  • 你提到的文件是完全一样的文件,除了最后这部分。 jQuery(document).ready(function() { Login.init(); });
  • 我已经验证了你的代码并且工作正常,即在一个单独的 JS 文件中登录函数代码并从 html 页面调用函数,在 jQuery 文档上准备好。没有问题(在我的机器上本地测试)。
  • 我对您在这里想要实现的目标感到困惑。无论哪种方式,您最好看看原型对象是如何工作的,您是否使用任何 IDE 或 JavaScript linter?他们可能会通过指出一些我认为是问题所在的语法错误来帮助您。
  • 将 Sublime 3 与 Linter 一起使用,没有错误。 @PhaniKumarM 感谢您的验证。它可能与以前加载的脚本有关。我会调查的。到目前为止谢谢!

标签: javascript jquery


【解决方案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();
});
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

    【解决方案2】:

    由于 webpack 正在捆绑所有内容,我无法从捆绑的脚本外部调用。

    我解决了这个变化:

    var Login = function() { }
    

    收件人:

    window.Login = function () { }
    

    【讨论】:

      猜你喜欢
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多