は、私はこのように、createElementNS
を使用して新しい要素を作成します。接頭辞付きのcreateElementNSの違いは何ですか? XHTMLページにリンクされているJSで
const NS = 'http://my.site/xmlns';
const el1 = document.createElementNS(NS, 'custom');
const el2 = document.createElementNS(NS, 'p:custom');
私は2番目の引数に名前空間接頭辞を使用して作成要素とせずに作成したものとの違いが何であるかを理解することはできませんそれ。例えば、これらのCSSルールは両方要素で同じ効果があります。
@namespace p url('http://my.site/xmlns');
p|custom { background: yellow; }
次のdocument.getElementsByTagNameNS(NS, 'p:custom')
が私には奇妙に思える、空HtmlCollection
を返すのに対し、document.getElementsByTagNameNS(NS, 'custom')
の呼び出しは、HtmlCollection
との両方の要素を返します。
だから、名前空間接頭辞付きの要素とそれを持たない要素の作成の違いは何ですか?
最初の引数で指定された名前空間がドキュメント内の名前空間接頭辞で宣言されている場合、修飾名(QName)は 'createElementNS()'の名前空間接頭辞で修飾する必要はありません。 https://developer.mozilla.org/en-US/docs/Web/API/Document/createElementNS –
@Scott Marcus:ああ、どうしたの?仕様もMDNもこれを明示的に示していないので、私が紛失しているものがなければなりません。 – BoltClock
ええ、聞いたことがありますが、MDNページでは、表現されたQNameなしで使用されていることが示されていますが、ドキュメント内に同じ名前空間が既に宣言されています(接頭辞付き)。あなたが指定する新しい要素が暗黙的に正しいQNameを持つという接頭語で既に宣言されています。 –