Javascript 从另一个js源文件调用函数时出现未定义错误
我有一个问题涉及调用另一个js源文件中的函数 我在文件之前声明了sourcefile,并使用调用该特定文件的函数 功能。 我原以为这样行得通,但它给出了一个未定义的错误 我在一个文件中还有一个函数,它调用后来声明的源文件中的函数。 这将涉及相同的文件,但反过来说 函数在文档就绪语句(函数)之间声明 有没有办法避免未定义的错误 我是这样设置的:Javascript 从另一个js源文件调用函数时出现未定义错误,javascript,jquery,version-control,Javascript,Jquery,Version Control,我有一个问题涉及调用另一个js源文件中的函数 我在文件之前声明了sourcefile,并使用调用该特定文件的函数 功能。 我原以为这样行得通,但它给出了一个未定义的错误 我在一个文件中还有一个函数,它调用后来声明的源文件中的函数。 这将涉及相同的文件,但反过来说 函数在文档就绪语句(函数)之间声明 有没有办法避免未定义的错误 我是这样设置的: <script type="text/javascript" src="includes/livetabs.js"></script&g
<script type="text/javascript" src="includes/livetabs.js"></script>
<script type="text/javascript" src="includes/chat.js"></script>
//this is in the chat.js file
$(document).ready(function(){
function chatWith(chatuser) {
check=iscookieUsername();
if (!check){
chatusersuspended=chatuser;
showchatinlogform();
}
createChatBox(chatuser);
$("#chatbox_"+chatuser+" .chatboxtextarea").focus();
}
});
//this is in the livetabs.js file
$(document).ready(function(){
function iscookieUsername(){
if (!tbusername){
return false;
}
if (issessionusername){//flag if session has already been set
return true;
}
$.ajax({
url: "includes/livetabs.php",
data: ({username: tbusername, action: "setsessionusername"}),
cache: false,
type: "POST",
dataType: "json",
success: function(data) {
//store username in php session
//some personal user preferences returned
usernamecookie=data.cookie;
trackuser=data.track;
issessionusername=1;
}});
return true;
}
});
//这在chat.js文件中
$(文档).ready(函数(){
函数chatWith(chatuser){
check=iscookieUsername();
如果(!检查){
chatusersuspended=chatuser;
showchatinlogform();
}
createChatBox(聊天用户);
$(“#聊天盒”+聊天用户+”.chatboxtextarea”).focus();
}
});
//这在livetabs.js文件中
$(文档).ready(函数(){
函数iscookieUsername(){
如果(!tbusername){
返回false;
}
if(issessionusername){//如果已设置会话,则标记
返回true;
}
$.ajax({
url:“includes/livetabs.php”,
数据:({username:tbusername,操作:“setsessionusername”}),
cache:false,
类型:“POST”,
数据类型:“json”,
成功:功能(数据){
//在php会话中存储用户名
//返回了一些个人用户首选项
usernamecookie=data.cookie;
trackuser=data.track;
issessionusername=1;
}});
返回true;
}
});
谢谢,Richard,您的第一个源文件(包含要调用的函数的源文件)可能存在语法错误,无法使用该函数 此外,无论文件的加载顺序如何,该函数都是可用的。例如:
function foo() { alert('foo!'); }
foo();
bar();
function bar() { alert('bar!'); }
编辑:看来SolutionYogi预测了正确的答案。但是作为参考,我将保留我的函数。如果您在$(document).ready方法调用中定义了您的函数,则从外部看不到它们。尝试在ready方法调用之外定义它们
$(document).ready(
function()
{
var test = function() { alert('test'); };
test(); //It will work here.
anotherTest(); //This will also work.
}
);
function anotherTest() { alert('anotherTest'); };
test(); //You can't call test function here because test is defined inside the anonymous function passed to the 'ready' method.
anotherTest(); // Alerts 'anotherTest'.
如果你的代码不是这样排列的,请发布你的源代码,以便识别问题。在浏览特定页面之前,使用谷歌浏览器并按F12查看开发者工具。
在网络中,您可以通过搜索包含函数的脚本来查看加载了哪些文件。(您也可以在脚本上进行筛选)它应该位于顶部,您的调用脚本应该稍后加载。如果未加载该文件,请在前面的页面中包含该文件。希望这能解决问题。你能发布一些HTML/JS源代码吗?好的,请稍等。如果还不够的话,我会给你一个网站的链接。谢谢,我编辑了我的原始问题。正如你所建议的。我必须把它们从文档准备方法中带出来。Richard,把'iscookieUsername'和'chatWith'函数放在文档之外。document.ready是在加载网页时放置要运行的代码的位置。你没有在那里定义你的函数。请尝试阅读一些jQuery教程以了解更多内容。如@SOLUTION YOGI所建议的,这可能是由包含函数的文档就绪方法引起的。我得先查清楚。这是我的案子:一个小时的调查结束了!