Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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
Javascript 从另一个js源文件调用函数时出现未定义错误_Javascript_Jquery_Version Control - Fatal编程技术网

Javascript 从另一个js源文件调用函数时出现未定义错误

Javascript 从另一个js源文件调用函数时出现未定义错误,javascript,jquery,version-control,Javascript,Jquery,Version Control,我有一个问题涉及调用另一个js源文件中的函数 我在文件之前声明了sourcefile,并使用调用该特定文件的函数 功能。 我原以为这样行得通,但它给出了一个未定义的错误 我在一个文件中还有一个函数,它调用后来声明的源文件中的函数。 这将涉及相同的文件,但反过来说 函数在文档就绪语句(函数)之间声明 有没有办法避免未定义的错误 我是这样设置的: <script type="text/javascript" src="includes/livetabs.js"></script&g

我有一个问题涉及调用另一个js源文件中的函数

我在文件之前声明了sourcefile,并使用调用该特定文件的函数 功能。 我原以为这样行得通,但它给出了一个未定义的错误

我在一个文件中还有一个函数,它调用后来声明的源文件中的函数。 这将涉及相同的文件,但反过来说

函数在文档就绪语句(函数)之间声明

有没有办法避免未定义的错误

我是这样设置的:

<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所建议的,这可能是由包含函数的文档就绪方法引起的。我得先查清楚。这是我的案子:一个小时的调查结束了!