このコードは、xml ファイルを取り込んで解析し、テーブルとして出力します。これがコードの一部です(Firefox向け):
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) is nullであり、明らかに正しくありません。
そして興味深いことに、行を追加しようとすると
alert(xmlDoc.getElementsByTagName("title").length)
<1> 行の前に 0 を示すウィンドウがポップアップ表示されますが、[OK] をクリックすると、正しいタイトル (XML から) が新しいウィンドウに表示されます! ステップバイステップモードのように。
私が試したこと:
1、にxmlDoc.getElementsByTagName("title").item(0)
変更xmlDoc.getElementsByTagName("title")[0]
機能しませんでした。デバッガーから「xmlDoc.getElementsByTagName("title")[0] は未定義です」と表示されました
2、XML ファイルのタグ内またはタグ間のすべての空白を削除しましたが、役に立ちませんでした。