如何解决Javascript无法正确执行程序
| 我正在尝试使用JavaScript处理我正在构建的虚拟网页中的页面内容。 为此,我编写了一个名为“ 0”的小函数,该函数获取由文件名指定的HTML文件,并将该文件的内容打印到ID属性对应于“ 3”字段的一对“ 2”标签的“ 1”中。 然后,我将调用包装在其他函数中,以自动构建完整的页面,如下所示。 因此,我称呼如下所示:function displayHome() {
writeText(\'homeMain.html\',\'mainFrame\');
writeText(\'homeSide.html\',\'sideFrame\');
}
...显示主页。
但是,当我调用此函数时,显示仅更新\'sideFrame\'
对象,而不对\'mainFrame\'
的内容进行任何更改。但是,如果我在两个writeText()
调用之间使用alert(\“ 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\");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。