我正在进行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
答案 0 :(得分:4)
getElementById查找元素的唯一ID,而不是元素的类型。因此,如果您的标记看起来如下所示,它将适用于两种情况:
<a id="a">
答案 1 :(得分:3)
您不能将getElementById
称为任意元素的方法,它只能在document
元素上使用。这是有道理的,因为HTML文档上不应该有任何重复的ID。
话虽这么说,你的电话getElementById("a")
看起来很奇怪;你真的有id="a"
的元素,或者你是否试图获得对任意锚的引用?
答案 2 :(得分:0)
getElementById是document对象的函数。 DOMElement没有这种方法。