Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以在另一个JS文件中调用用一个JavaScript编写的函数吗?_Javascript_Include - Fatal编程技术网

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

我们可以在另一个JS文件中调用用一个JavaScript编写的函数吗?,javascript,include,Javascript,Include,我们可以在另一个JS文件中调用在一个JS文件中编写的函数吗?有人能帮我如何从另一个JS文件调用该函数吗 只要两者都被网页引用,就可以 您只需调用函数,就好像它们在同一个JS文件中一样。可以。您需要将JS文件引用到.aspx页面 <script language="javascript" type="text/javascript" src="JScript1.js"> </script> <script language="javascript" typ

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

只要两者都被网页引用,就可以


您只需调用函数,就好像它们在同一个JS文件中一样。

可以。您需要将
JS文件
引用到
.aspx
页面

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

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

只要在首次使用函数之前加载了包含函数定义的文件,就可以像在同一个JS文件中一样调用函数

File1.js

function alertNumber(number) {
    alert(number);
}
File2.js

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


....
....
....
alertOne();
....
另一种方法行不通。 正如作者正确指出的那样。另一种方法也会奏效

HTML


....
....
....
alertOne();
....
不起作用的是:

HTML


....
alertOne();
....
....

虽然调用时定义了
alertOne
,但在内部它使用了一个尚未定义的函数(
alertNumber
)。

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

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


上述答案有一个错误的假设,即文件的包含顺序很重要。因为在调用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>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript">
    alertOne( );
</script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
    alertOne( );
</script>
<script type="text/javascript" src="file1.js"></script>
也可以按如下方式订购:

[HTML]

<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
    alertOne( );
</script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript">
    alertOne( );
</script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
    alertOne( );
</script>
<script type="text/javascript" src="file1.js"></script>
但如果你要这么做:

[HTML]

<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
    alertOne( );
</script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript">
    alertOne( );
</script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
    alertOne( );
</script>
<script type="text/javascript" src="file1.js"></script>
它只与执行时可用的变量和函数有关。定义函数时,在随后调用该函数之前,它不会执行或解析其中声明的任何变量

包含不同的脚本文件与同一文件中按该顺序排列的脚本并无区别,但延迟脚本除外:

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


然后您需要小心。

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

<html>
<head>
    <script type="text/javascript" src='path/to/external/js'></script>
</head>
<body>
........
要在当前文件中调用此函数,只需按-

......
<script type="text/javascript">
    $(function(){
        $('#element').yourFunctionName();
    });
</script>
并在当前文件中调用此函数作为-

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

下面是一个更具描述性的示例,附带了代码笔片段:

1.js

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

function fn1() {
  document.getElementById("result").innerHTML += "fn1 gets called";
}
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>

点击我
输出


尝试此代码笔片段:。

ES6:不要在.html中使用
包含许多js文件,您只能包含一个主文件,例如使用属性
type=“module”
()的
script.js
,在
中可以包含其他文件:

<script type="module" src="script.js"></script>
在“module.js”中,必须输入要导入的

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

工作。

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


window['functionme'](参数)

对于那些希望在(服务器端运行脚本)中执行此操作的人,另一个选项是使用
require
模块。exports
。下面是一个关于如何创建模块并将其导出以供其他地方使用的简短示例:

file1.js

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

exports.print = print;
file2.js

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

function printOne() {
    file1.print("one");
};

这听起来可能有点吹毛求疵,但包含与连接脚本并不完全相同。考虑Script Pt1:<代码>函数MyFalm(){{/Case>和Script P2:<代码>警报();}<代码>无效。这让我很烦恼,因为我试图模块化一个太长的js文件。如果某个函数在类中,请参见此函数是否共享
this
上下文?
在调用函数时绑定(除非事先调用了
bind
)。两个单独文件中的两个函数不会自动共享
上下文,在上述示例中,也没有
上下文,即非严格模式下的
窗口
,或严格模式下的
未定义
。您可以通过将函数指定为对象的成员(即在构造函数
this.method=myOtherFunc
)或使用绑定,使其他脚本中的函数共享相同的
this
值。如果您需要更深入的答案,请发布一个更详细的SO问题。干杯,斯图尔特请不要到处假设jQuery。另外,在document ready子句中包装
$.fn
赋值是没有意义的,所以我下次会记住:),但是你能解释一下为什么$.fn赋值是没有意义的吗?不是赋值,而是包装。好的,这意味着当document未准备好时,只有$.fn才应该用于创建函数,但为什么?声明函数不需要等待DOM。即使调用可能(但通常不会)。将Index.html文件中的JS文件包含到另一种方法中,在这种方法中,我们使用JS导入方法从另一个JS文件导入方法,该JS文件具有JS脚本方法export to export方法。“aspx”从何而来???
<script type="module" src="script.js"></script>
import { hello } from './module.js';
...
// alert(hello());
export function hello() {
    return "Hello World";
}
const print = (string) => {
    console.log(string);
};

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

function printOne() {
    file1.print("one");
};