我想在second.js文件中调用在first.js文件中定义的函数。这两个文件都定义在HTML文件中,如下所示:
<script type="text/javascript" src="first.js"></script>
<script type="text/javascript" src="second.js"></script>
我想在second.js中调用first.js中定义的fn1()。从我的搜索答案是,如果first.js是首先定义的,这是可能的,但从我的测试中,我还没有找到任何方法来做到这一点。
这是我的代码:
second.js
document.getElementById("btn").onclick = function() {
fn1();
}
first.js
function fn1() {
alert("external fn clicked");
}
如果您的服务器允许使用缓存来提高速度,请使用缓存。
var extern =(url)=> { // load extern javascript
let scr = $.extend({}, {
dataType: 'script',
cache: true,
url: url
});
return $.ajax(scr);
}
function ext(file, func) {
extern(file).done(func); // calls a function from an extern javascript file
}
然后像这样使用它:
ext('somefile.js',()=>
myFunc(args)
);
可选地,为它制作一个原型以使其更加灵活。所以你不需要每次都定义文件,如果你调用一个函数或者你想从多个文件中获取代码。
函数不能被调用,除非它是在同一个文件中定义的,或者是在尝试调用它之前加载的。
除非函数与试图调用它的函数在相同或更大的作用域中,否则不能调用它。
你可以在first.js中声明fn1函数,然后在second中你可以只声明fn1();
1. js:
function fn1 () {
alert();
}
2. js:
fn1();
index . html:
<script type="text/javascript" src="1.js"></script>
<script type="text/javascript" src="2.js"></script>
你可以在first.js中把这个函数设置为全局变量
看一下闭包,不要把它放在文档里。准备好了,放到外面
你也可以使用ajax
$.ajax({
url: "url to script",
dataType: "script",
success: success
});
与使用jquery getScript的方法相同
$.getScript( "ajax/test.js" )
.done(function( script, textStatus ) {
console.log( textStatus );
})
.fail(function( jqxhr, settings, exception ) {
$( "div.log" ).text( "Triggered ajaxError handler." );
});