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 に答える