gpt4 book ai didi

javascript - getElementsByTagName 返回 null 值(但在 Debug模式下工作得异常正常)

转载 作者:行者123 更新时间:2023-11-28 09:38:55 25 4
gpt4 key购买 nike

此代码接收 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 中以 Debug模式逐步运行该代码时,该代码工作正常。但是如果没有设置断点,当程序到达第 <1> 行时,将显示错误:xmlDoc.getElementsByTagName("title").item(0) 为 null ,这显然不正确。

而且有趣的是,当我尝试添加一行时

alert(xmlDoc.getElementsByTagName("title").length)

在<1>行之前,它会弹出一个窗口显示0,但是当我单击“确定”后,正确的标题(来自XML)将显示在新窗口中!与分步模式一样。

我尝试过的事情:

1、将 xmlDoc.getElementsByTagName("title").item(0) 更改为 xmlDoc.getElementsByTagName("title")[0]

不起作用,调试器告诉我“xmlDoc.getElementsByTagName("title")[0] 未定义”

2,删除了XML文件中标签内或标签之间的所有空格,没有帮助。

最佳答案

该问题可能是由于您的文档异步加载造成的。您可以查看document.async这里的属性(property)。我认为如果您将此属性设置为 false,您的代码将会工作。

// create document and load URL
var xmlDoc = document.implementation.createDocument("","doc",null);
xmlDoc.async = false;
xmlDoc.onload = generateHTML(xmlDoc);
xmlDoc.load(URL);

请注意,我在调用加载函数之前移动了附加事件处理程序以加载事件的行。

关于javascript - getElementsByTagName 返回 null 值(但在 Debug模式下工作得异常正常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12634747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com