在另一个脚本中引用javascript函数
我有一个“一天结束的大脑放屁”&无法让这段简单的代码工作。我只想在我正在使用的另一个脚本中重用函数 例如,在javascript A中,我有:在另一个脚本中引用javascript函数,javascript,jquery,function,wordpress,Javascript,Jquery,Function,Wordpress,我有一个“一天结束的大脑放屁”&无法让这段简单的代码工作。我只想在我正在使用的另一个脚本中重用函数 例如,在javascript A中,我有: 函数rollLink(){ //代码做了一些惊人的事情 }; rollLink(); 在另一个JS文件(我们称之为B)中,我试图将rollLink函数作为简单AJAX调用的一部分进行重用: $.ajax({ 网址:bla, 资料来源:bla, 成功:功能(数据){ $('#hero')。追加(数据); rollLink(); } }); 但是我得到一
函数rollLink(){
//代码做了一些惊人的事情
};
rollLink();
在另一个JS文件(我们称之为B)中,我试图将rollLink
函数作为简单AJAX调用的一部分进行重用:
$.ajax({
网址:bla,
资料来源:bla,
成功:功能(数据){
$('#hero')。追加(数据);
rollLink();
}
});
但是我得到一个错误,说没有定义rollLink()。有人能用我的方式指出错误吗
编辑:
啊,很抱歉信息不充分。我将详细说明:
- 脚本A是我的主JS文件。它运行在我的WP主题的每个页面上&通过
文件排队functions.php
- 脚本B位于我正在构建的WP插件中
您应该加载页面上的文件,并且在ajax调用之前必须加载定义rollLink的文件。基本情况就是这样 如果页面a的大小远远大于页面b,则下载和执行所需的时间将更长。更糟糕的是,如果您将函数放在文件的按钮上,那么即使在页面a完成加载之前,页面b也将准备就绪、运行并执行。
以防万一,请尝试验证rollLink()是否正确;在调用它之前是一个函数
if(typeof rollLink === "function")
{
//true;
}
else{
//false;
}
如果为true,则表示函数已准备就绪,否则,它不存在(尚未)。
简单的解决方法是从脚本末尾调用ajax函数,确保加载了所有必需的文件
一个无效的解决方案是递归调用ajax函数,等待rollLink加载
if(typeof rollLink === "function")
{
//do ur work
}
else{
//call again after one sec;
setTimeout(function (){callSelfAjaxFunction();} , 1000);//every one sec
}
因此,如果您喜欢这种方法,您可能希望在每次调用时传递一个计数器作为一个参数递增,并在超过某个参数时终止,这样您就不会有调用self的函数,因为服务器永远不可用
if(counter < 10 ){
setTimeout(function (){
callSelfAjaxFunction(counter++);
} , 1000);//every one sec
}
if(计数器<10){
setTimeout(函数(){
callselfajax函数(计数器++);
},1000);//每一秒
}
也许可以尝试在$(文档)中包装script_b.js
$(document).ready(function(){
$.ajax({
url: bla,
data: bla,
success:function(data) {
$('#hero').append( data );
rollLink();
}
});
}
这可能是因为使用该函数的文件在定义该函数的文件之前加载。当我尝试加载图像文件并在画布上显示它时,我也遇到了同样的问题。原因是要使用的文件太大,加载需要花费很多时间,在加载文件之前加载另一个文件,因此它表示未定义变量
解决方案:
您可以做的是使布尔变量functionready并将其初始化为false,然后在函数定义中将其值设为true,然后在使用该函数之前检查变量是否为true如果为true,然后执行else等待 这是不够的信息。还请向我们展示加载这两个脚本的方式。这取决于加载脚本的顺序以及代码的执行方式。rollLink
global吗?另外,如果Ajax调用真的很快,可能页面上的脚本还没有全部加载,我想我已经发现了问题所在。当我将脚本排队时,我忘了将插件设置在页面底部(因此在脚本A下面)。我现在遇到的问题是,当我将脚本(上面引用为B)排队以显示在页面底部时,它们仍然在我的主脚本(上面引用为A)之前被调用。嗯,我想我需要进一步阅读一下如何将WP插件的脚本排队