此代碼正在取出一個xml文件並將其解析並輸出爲表格。以下是一段代碼(面向Firefox):getElementsByTagName返回空值(但在調試模式下可以很好地工作)
function viewXML(inputForm) {
var URL=inputForm.URL.value; //input XML URL
// create document and load URL
var xmlDoc = document.implementation.createDocument("","doc",null);
xmlDoc.load(URL);
xmlDoc.onload = generateHTML(xmlDoc);
hWin = window.open("","sth", "height=800,width=600");
hWin.document.write(html_text);
hWin.document.close();
}
viewXML是一個按鈕的onClick函數。現在generateHTML()
一段代碼:
function generateHTML(xmlDoc) {
...
caption=xmlDoc.getElementsByTagName("title").item(0).firstChild.nodeValue; //<1>
html_text += "<caption align='left'><h1>" + caption + "</h1></caption>";
...
}
一塊XML文件:
<catalog>
<title>Airbus_Aircraft_Families</title>
<aircraft>
<Airbus>A380</Airbus>
<Aircraft>A380</Aircraft>
<seats>555</seats>
<Range>15000km</Range>
<Wingspan>78.8m</Wingspan>
<Height>24.1m</Height>
</aircraft>
</catalog>
問題: 這段代碼,當我在調試模式下運行它一步一步工作正常 - 在Firebug中。但是如果沒有設置斷點,當程序點擊行< 1>時,將顯示一個錯誤,說: xmlDoc.getElementsByTagName(「title」)。item(0)爲null,這顯然不是真的。
而且有趣,當我試圖< 1>行之前添加一行
alert(xmlDoc.getElementsByTagName("title").length)
,它會彈出一個窗口顯示爲0,但在我點擊「確定」,正確的標題(來自XML)將顯示在新窗口中!就像在逐步模式下一樣。
事情我想:
1,改變xmlDoc.getElementsByTagName("title").item(0)
到xmlDoc.getElementsByTagName("title")[0]
沒有工作,調試器告訴我: 「xmlDoc.getElementsByTagName(」 標題 「)[0]未定義」
2,刪除XML文件中標籤內或標籤之間的所有空格,沒有幫助。
它似乎需要一些時間來加載XML並使其成爲一個HTML元素。 – Moorthy