getElementsByTagName有效,但getElementById不起作用?

时间:2013-04-08 15:19:46

标签: javascript dom getelementbyid getelementsbytagname

我正在进行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

3 个答案:

答案 0 :(得分:4)

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

<a id="a">

答案 1 :(得分:3)

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

话虽这么说,你的电话getElementById("a")看起来很奇怪;你真的有id="a"的元素,或者你是否试图获得对任意锚的引用?

答案 2 :(得分:0)

getElementByIddocument对象的函数。 DOMElement没有这种方法。