0

我正在做 XML 解析并遇到一个奇怪的问题。来自 DOM 元素的 getElementsByTagName 有效,但 getElementById 无效。Chrome 在我为清单调用 getElementById 的任何地方都会出现此错误:

Object #<Element> has no method 'getElementById'

但不知何故 getElementByTagName 工作得很好。

var manifest = content.getElementsByTagName("manifest")[0];
var spine = content.getElementsByTagName("spine")[0];
var itemref = spine.getElementsByTagName("itemref")[0].getAttribute("idref");
alert(itemref);//works
var firstpage = manifest.getElementById(itemref).getAttribite("href");

谁能向我解释为什么 getElementById DOM 不适合我?

test = manifest.getElementById("any value");//Problem
test = manifest.getElementsByTagName("any value");//no Problem
4

3 回答 3

4

getElementById 查找元素的唯一 ID,而不是元素的类型。因此,如果您的标签如下所示,则它适用于两种情况:

<a id="a">
于 2013-04-08T15:21:28.333 回答
3

您不能getElementById作为任意元素的方法调用,它仅在document元素上可用。这是有道理的,因为 HTML 文档上不应该有任何重复的 ID。

话虽如此,您的电话getElementById("a")看起来很奇怪;你真的有一个带有 的元素id="a",或者你是否试图获得对任意锚点的引用?

于 2013-04-08T15:20:33.983 回答
0

getElementById文档对象的函数。DOMElement没有这个方法。

于 2013-04-08T15:26:26.263 回答