如何从 <script> 标签调用 javascript 函数?

新手上路,请多包涵
<html>
 <script>
    //some largeFunction()

    //load a script dynamically based on the previous code
    document.write("<script src='//...'><\/script>");
 </script>
</html>

问题:是否可以将 largeFunction() 移出静态 html 页面并将其放入 js 文件中?如果是,那么在编写 <script> 标签之前,我怎么能静态调用该函数?

原文由 membersound 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 578
2 个回答

简短的回答:是的。

只要您首先加载包含该函数的第一个脚本,您就可以在任何地方调用该函数,只要它先加载即可。

 <script src="file1.js" type="text/javascript"></script>
<script src="file2.js" type="text/javascript"></script>

在此示例中,确保 file1.js 包含您的 largeFunction() 函数。然后,您可以在 largeFunction(); file2.js

你也可以这样做:

 <script src="file1.js" type="text/javascript"></script>
<script>
    largeFunction();
</script>

只需确保您的 FIRST 脚本包含该函数即可。

原文由 MortenMoulder 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以尝试以下选项:


大函数.js

 function largeFunction(){
  // This is a global function and is a part of window object.
  // This can be called from anywhere once the file is loaded.
}

索引.html

 <script src="largeFunction.js" type="text/javascript"></script>
<script>
    largeFunction();
</script>


经济研究所

这些函数仅在加载文件时执行一次。它们在编译时被调用。

 function largeFunction(){

}

(function(){
  largeFunction();
})()


你甚至可以在没有 IIFE 的情况下尝试

function largeFunction(){

}
largeFunction();


window.onload / $(文档).ready()

一旦呈现所有元素,就会触发此事件。如果您的 JS 正在操纵任何元素,例如管理 UI 状态或创建控件,例如 datepickerssearchable dropdownsadding options to select 这些事件是首选-。

注意: 两个事件并不相同。您可以参考以下帖子 window.onload vs $(document).ready()

 // Pure JS
function largeFunction(){

}

window.onload = function(){
  largeFunction();
}

// jQuery
function largeFunction(){

}

$(document).ready(function(){
  largeFunction();
})


注意: 拥有大功能不是一个好习惯。您还应该尝试将功能拆分为多个功能

function getData(callback){
  var data = ...
  // Gets data from server
  data = cleanData(data);
  data = processData(data);

  if(callback) callback(data); // callback refers to renderUI function
}

function cleanData(data){
  // Clean if any field needs formatting
  return data;
}

function processData(data){
  // You can permute logic to parse data
  return data;
}

function renderUI(data){
  // Update DOM element with data
}

function largeFunction(){
  getData(renderUI);
}

原文由 Rajesh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题