Javascript未正确执行过程

Javascript not executing procedures correctly

本文关键字:执行 过程 Javascript      更新时间:2023-09-26

我正试图使用JavaScript来操纵我正在构建的虚拟网页中的页面内容。

为此,我编写了一个名为writeText(file_name, location)的小函数,该函数获取由文件名指定的HTML文件,并将该文件的内容打印到一对<div>标签的innerHTML,这些标签的id属性对应于location字段。

然后,我将调用封装在其他函数中,以自动构建这样的完整页面。

所以我把它叫做

function displayHome() {
    writeText('homeMain.html', 'mainFrame');
    writeText('homeSide.html', 'sideFrame');
}

以显示主页。

然而,当我调用此函数时,显示器只更新'sideFrame'对象,而不会对'mainFrame'的内容进行任何更改。但是,如果我在两个writeText()调用之间用警报("Dummy")中断函数,那么两个contentFrames都会正确更新。

我想知道是否有人以前见过这样的东西,是否有人知道如何修复它

为了完整起见(这几乎是逐字逐句地从w3schools网站上复制的):

function writeText(script_file, location) {
    if (window.XMLHttpRequest)  {
        xmlhttp = new XMLHttpRequest();
    }   else    {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function() {
        document.getElementById(location).innerHTML = xmlhttp.responseText;
    }
xmlhttp.open("GET",script_file,true);
xmlhttp.send();
}

您使用的是一个全局变量xmlhttp,因此它在函数第二次运行时会被破坏。请求本身是异步的,因此第二个调用在第一个调用仍在运行时运行。

要解决此问题,请使用本地变量(因此每个对函数的调用都有自己的xmlhttp),方法是在xmlhttp:之前使用"var"关键字

var xmlhttp;
if (window.XMLHttpRequest)  {
    xmlhttp = new XMLHttpRequest();
}   else    {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}