非致命的Javascript错误?

时间:2013-02-13 07:25:58

标签: javascript syntax-error

我认为我的脚本中存在某种非致命的错误,它不允许我使用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>

1 个答案:

答案 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