页面加载时仅加载一个JavaScript函数。

页面加载时仅加载一个JavaScript函数。,javascript,jquery,Javascript,Jquery,我有一个带有一些JavaScript函数的网页,设置为在document.ready上加载 然而,如果我有其中的4个,似乎只有最后一个加载 这是我的密码 $(document).ready(function () { var nation = "ireland"; var irelandMatches = []; var matchOrderReversed = false; loadDoc(); showRSS("Irish Times");

我有一个带有一些JavaScript函数的网页,设置为在document.ready上加载

然而,如果我有其中的4个,似乎只有最后一个加载

这是我的密码

$(document).ready(function ()
{
    var nation = "ireland";
    var irelandMatches = [];
    var matchOrderReversed = false;

    loadDoc();
    showRSS("Irish Times");
    loadWeather();
    loadTwitter();
loadDoc()和loadTwitter()方法会加载,但weather和showRSS不会加载。如果我把loadTwitter()注释掉,那么天气会很好

如果有什么不同,所有这些方法都使用XMLHttpRequest,每个方法中都定义了XMLHttpRequest,如下所示

function loadYouTube()
    {
        var html = "";

        if (window.XMLHttpRequest)
        {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }

        else
        {  // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange = function ()
        {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {
                var ret = xmlhttp.responseText;
                var spl1 = ret.split("~");

                for (i = 0; i <= 10; i++)
                {
                    var spl2 = spl1[i].split("*");
                    var current = "<a href='" + spl2[1] + "'><img src='" + spl2[2] + "' width='50' height='50'>" + "<a href='" + spl2[1] + "'>" + spl2[0] + "</a> <br/>";
                    html += current;
                }

                $("#yt").html(html);
            }
        }

        xmlhttp.open("GET", "getyoutube.php?", true);
        xmlhttp.send();
    }
函数loadYouTube()
{
var html=“”;
if(window.XMLHttpRequest)
{
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
var ret=xmlhttp.responseText;
var spl1=ret.split(“~”);

对于(i=0;i当您在
loadYouTube()
示例中定义
xmlhttp
时,由于缺少
var
,您在全局范围内这样做。因此
loadDoc()
设置
window.xmlhttp
,然后
loadWeather()
不久将其覆盖,接着是
loadTwitter()

在加载函数中尝试以下操作:

function loadYouTube()
    {
        var html = "";

        // define xmlhttp in block scope
        var xmlhttp;

        // rest of function...
    }

那么,你确定你没有用另一个函数删除一个函数html(
$(“#yt”).html(html);
),或者你在每个函数中使用了不同ID的不同元素吗?这很可能是运行时错误。你只需打开浏览器中的开发工具(Firefox和chrome:ctrl+shit+i)即可检查这一点然后切换到控制台。然后,只需重新加载页面。很难或不可能从上面的代码中找到错误,因为无法预测Ajax响应的返回结果。是的,每个函数都写入不同的DIV。还可以在每个函数的顶部添加
var xmlhttp;
functions@user3102785为了它的工作这修复了它,因为您意外地创建了一个名为
xmlhttp
的全局变量。这意味着您的每个其他函数都覆盖了该值,因此您只能看到使用它的最后一个函数的结果。