我有一个简单的脚本,我正在测试,但它的表现很奇怪。我调用一个加载的脚本,然后将其添加到特定的td id
,然后我调用第二个脚本并将其添加到不同的td id
,但由于某种原因,它会清除第一个div的内容,即使它们是单独的
这就是我所拥有的:
function call_back(result,div_id,func){
document.getElementById(div_id).innerHTML = result;
if(typeof(func) != 'undefined'){func();}
}
function caller(url,cfunc)
{
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=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function call_file(url,div_id,func){
caller(url,function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
call_back(xmlhttp.responseText,div_id,func);
}
});
}
然后我在onload上有这个:
window.onload = function(){
stage = 6;
call_file('test.html','menu_left');
switch(parseInt(stage)){
case 6: call_file('test2.html','main'); break;
}
};
案例陈述出现了问题。如果我删除case语句,添加test.html
的内容加载正常,但如果我添加case语句,test.html
的内容将消失,然后只显示test2.html
。
id的html是:
<table class="body_wrapper">
<tr>
<td class="menu_left" id="menu_left"></td>
<td class="main" id="main"></td>
</tr>
</table>
为什么会发生这种情况?
答案 0 :(得分:1)
问题与switch语句无关。当您调用某些本地文件的ajax请求并且它已经被缓存时,call_back函数在document.getElementById(div_id).innerHTML = result;
执行之前被调用两次,因此被最后一次调用的变量值替换。如果您只是将警报发送到call_back函数,如下所示
function call_back(result, div_id, func) {
alert(result);
document.getElementById(div_id).innerHTML = result;
if (typeof (func) != 'undefined') { func(); }
}
你会发现它有效。但由于它不是解决方案,或者如果您修改此
xmlhttp.open("GET", url, true);
到
xmlhttp.open("GET", url, false);
它会起作用,但你将失去AJAX的异步功能。