我认为我的脚本中存在某种非致命的错误,它不允许我使用Firebug来调试/调试脚本而b /导致Firefox不断显示连接...(使用swirly)而我是在页面上。该脚本似乎运行正常。
任何可能导致这种情况的想法?
<script type="text/javascript">
var xmlHttp;
var xmlDoc;
loadXMLFile();
function loadXMLFile()
{
xmlHttp = new window.XMLHttpRequest();
xmlHttp.open("GET", "myFile.xml", true);
xmlHttp.onreadystatechange = StateChange;
xmlHttp.send(null);
}
function StateChange()
{
if ( xmlHttp.readyState == 4 )
{
xmlDoc = xmlHttp.responseXML;
processXML();
}
}
function processXML()
{
var firstNames = xmlDoc.querySelectorAll("name");
if (firstNames == null)
{
document.write("Oh poo. Query selector returned null.");
}
else
{
for (var i = 0; i < firstNames.length; i++)
{
document.write(firstNames[i].textContent + "<br>");
}
}
}
</script>
答案 0 :(得分:1)
页面中的所有代码都会被解析,但在页面完成之前不会执行。这是因为您从document.write()
事件处理函数调用onreadystatechange
而不是解析时间。
在这种情况下,document.write()
隐式调用document.open()
,它会将所有代码从页面中删除,而剩下的只有document.write()
所写的文本。此外document
保持打开状态,这会导致浏览器“忙碌”。使用document.close()
可以避免这种情况,但不会阻止原始内容消失。
您需要向body
添加一个元素,然后使用一些“真正的”DOM操作方法。像这样:
<div id="qResult"></div>
然后代替document.write()
:
document.getElementById('qResult').innerHTML = WHAT_EVER_NEEDED