我正在做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
最佳答案
您不能将getElementById
作为任意元素的方法来调用,它仅在document
元素上可用。这是有道理的,因为HTML文档上不应有任何重复的ID。
话虽如此,您的呼叫getElementById("a")
看起来很奇怪;您是否真的有id="a"
元素,或者您想获取对任意锚点的引用?