我们可以在另一个JS文件中调用用一种JavaScript编写的函数吗?

2020/10/18 15:41 · javascript ·  · 0评论

我们可以在另一个JS文件中调用在一个JS文件中编写的函数吗?谁能帮我从另一个JS文件中调用该函数?

只要在第一次使用该功能之前就已加载了包含该功能定义的文件,就可以像在同一JS文件中那样调用该功能。

File1.js

function alertNumber(number) {
    alert(number);
}

File2.js

function alertOne() {
     alertNumber("one");
}

的HTML

<head>
....
    <script src="File1.js" type="text/javascript"></script> 
    <script src="File2.js" type="text/javascript"></script> 
....
</head>
<body>
....
    <script type="text/javascript">
       alertOne();
    </script>
....
</body>

The other way won't work.
As correctly pointed out by Stuart Wakefield. The other way will also work.

HTML

<head>
....
    <script src="File2.js" type="text/javascript"></script> 
    <script src="File1.js" type="text/javascript"></script> 
....
</head>
<body>
....
    <script type="text/javascript">
       alertOne();
    </script>
....
</body>

What will not work would be:

HTML

<head>
....
    <script src="File2.js" type="text/javascript"></script> 
    <script type="text/javascript">
       alertOne();
    </script>
    <script src="File1.js" type="text/javascript"></script> 
....
</head>
<body>
....
</body>

Although alertOne is defined when calling it, internally it uses a function that is still not defined (alertNumber).

上面的答案有一个错误的假设,即文件的包含顺序很重要。因为直到调用alertOne函数才调用alertNumber函数。只要两个文件都包含在时间alertOne中,则文件的顺序无关紧要:

[HTML]

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

[JS]

// File1.js
function alertNumber( n ) {
    alert( n );
};
// File2.js
function alertOne( ) {
    alertNumber( "one" );
};
// Inline
alertOne( ); // No errors

或者可以按以下顺序订购:

[HTML]

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

[JS]

// File2.js
function alertOne( ) {
    alertNumber( "one" );
};
// File1.js
function alertNumber( n ) {
    alert( n );
};
// Inline
alertOne( ); // No errors

但是,如果要执行此操作:

[HTML]

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

[JS]

// File2.js
function alertOne( ) {
    alertNumber( "one" );
};
// Inline
alertOne( ); // Error: alertNumber is not defined
// File1.js
function alertNumber( n ) {
    alert( n );
};

它只关系到执行时可用的变量和函数。定义函数后,它不会执行或解析其中声明的任何变量,直到随后调用该函数。

包含不同的脚本文件与在同一文件中按该顺序排列的脚本没有什么不同,但延迟的脚本除外:

<script type="text/javascript" src="myscript.js" defer="defer"></script>

那你要小心点

只要两者都被网页引用,是的。

您只需像在同一个JS文件中一样调用这些函数即可。

如果包含了所有文件,则可以将属性从一个文件调用到另一个文件(如函数,变量,对象等)。

您在一个.js文件中编写的js函数和变量-说a.js将可用于其他js文件-说b.js,只要使用以下include命令将a.jsb.js都包含在文件中机制(如果b.js中的函数调用a.js中的函数,则顺序相同)。

<script language="javascript" src="a.js"> and 
<script language="javascript" src="b.js">

ES6:除了<script>可以在.html中使用多个js文件之外,您还可以仅包含一个主文件(例如,script.js使用attribute type="module"support)),而在内部script.js可以包含其他文件:

<script type="module" src="script.js"></script>

script.js文件中包含另一个文件,例如:

import { hello } from './module.js';
...
// alert(hello());

在“ module.js”中,您必须导出将要导入的函数/类

export function hello() {
    return "Hello World";
}

这里的工作示例

是的你可以 。您需要同时引用JS file.aspx页面

<script language="javascript" type="text/javascript" src="JScript1.js">
 </script>

    <script language="javascript" type="text/javascript" src="JScript2.js">
    </script>

JScript1.js

function ani1() {
    alert("1");
    ani2();
}
JScript2.js
function ani2() {
    alert("2");
}

您可以从正在使用的文件中调用在另一个js文件中创建的函数。因此,为此,您首先需要将外部js文件添加到html文档中,如下所示:

<html>
<head>
    <script type="text/javascript" src='path/to/external/js'></script>
</head>
<body>
........

外部javascript文件中定义的函数-

$.fn.yourFunctionName = function(){
    alert('function called succesfully for - ' + $(this).html() );
}

要在当前文件中调用此函数,只需将函数调用为-

......
<script type="text/javascript">
    $(function(){
        $('#element').yourFunctionName();
    });
</script>

如果要将参数传递给函数,则将函数定义为-

$.fn.functionWithParameters = function(parameter1, parameter2){
        alert('Parameters passed are - ' + parameter1 + ' , ' + parameter2);
}

并在您当前的文件中将该函数称为-

$('#element').functionWithParameters('some parameter', 'another parameter');

这是附加了CodePen代码段的更具描述性的示例:

1.js

function fn1() {
  document.getElementById("result").innerHTML += "fn1 gets called";
}

2.js

function clickedTheButton() {
  fn1();
} 

index.html

<html>
  <head>
  </head>
  <body>
    <button onclick="clickedTheButton()">Click me</button>
    <script type="text/javascript" src="1.js"></script>
    <script type="text/javascript" src="2.js"></script>
  </body>
 </html>

输出

输出。 按钮+结果

试试这个CodePen片段:link

好吧,我遇到了另一个很好的解决方案。

window['functioName'](params);

对于那些想要在Node.js(服务器端运行脚本)中执行此操作的人,可以使用requiremodule.exports这是有关如何创建模块并将其导出以在其他地方使用的简短示例:

file1.js

const print = (string) => {
    console.log(string);
};

exports.print = print;

file2.js

const file1 = require('./file1');

function printOne() {
    file1.print("one");
};
本文地址:http://javascript.askforanswer.com/womenkeyizailingyigejswenjianzhongdiaoyongyongyizhongjavascriptbianxiedehanshuma.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!