【问题标题】:How can I use a function which is into another .js file?如何使用另一个 .js 文件中的函数?
【发布时间】:2018-06-06 15:46:39
【问题描述】:

这是我的代码的简化:

// script1.js
$(document).ready(function(){
    .
    .
    function myfunc(){ ... }
    .
    .
});


// script2.js
$(document).ready(function(){
    .
    .
    //doesn't work
    $.getScript("./script1.js");
    // anyway I need to call myfunc() here ... how can I access it?
    .
    .
});

如您所见,我使用$.getScript() 来要求sccript1.js 文件,但仍然没有在那里定义myfunc()。我该如何处理?

【问题讨论】:

标签: javascript jquery function getscript


【解决方案1】:

如您所见,我使用 $.getScript() 来要求 sccript1.js 文件, 但 myfunc() 仍然没有在那里定义。我该如何处理?

myfunc 是在 document.ready 事件中定义的,并且不会在全球范围内公开,因此您不能在不在此文档就绪事件中的另一个函数中使用它.

您需要要么 全局导出此函数 在 document.ready 事件之外定义它

全局导出函数

$(document).ready(function(){
    .
    .
    function myfunc(){ ... }
    window.myfunc = myfunc; //this line added here
    .
    .
});

或者在外面定义

$(document).ready(function(){
    .
    .

    .
    .
});
function myfunc(){ ... }

【讨论】:

  • 也作为请教一下(js专家),有个库叫nighmare.js,你建议我学一下吗?与 react.js 相比是不是很棒?
  • @stack 抱歉,我之前没有使用过它们中的任何一个。但是,我听说过关于 nightmarejs 的好消息,如果您在 自动化测试领域,那么动手使用这个库应该对您有用。
【解决方案2】:

尝试:

var myfunc=null;
// script1.js
$(document).ready(function(){
    .
    .
    myfunc = function (){ ... }
    .
    .
});


// script2.js
$(document).ready(function(){
    .
    .
myfunc();
.
});

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
【解决方案3】:

//util.js

var test = (function (){
return {
myfunc : function (){ ... }
}
})();

// script1.js

$(document).ready(function(){
  test.myfunc();
});

// script2.js

$(document).ready(function(){
   // $.getScript("./script1.js");
   test.myfunc()
});

在你的 html 中你应该把这个顺序

<script src="util.js"></script>
<script src="script1.js"></script>
<script src="script2.js"></script>

【讨论】:

    【解决方案4】:

    尝试使用绝对路径。例如https://example.com/js/script1.js 而不是 ./script1.js

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2021-08-20
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      相关资源
      最近更新 更多