4

HTMLドキュメントの開始タグまたは終了タグの長さをカウントできるjQueryまたは純粋なJavascript関数(より読みやすいソリューションを好む)を作成しようとしています。

例えば、

<p>Hello.</p>

開始タグと終了タグの長さとして 3 と 4 を返します。属性の追加、

<span class="red">Warning!</span>

開始タグと終了タグの長さとして 18 と 7 を返します。ついに、

<img src="foobar.png"/>

開始タグと終了タグの長さとして 23 と 0 (または -1) を返します。

仕様に応じて機能することが保証された正規のソリューションを探しているので、手動のテキスト操作ではなくDOMメソッドを使用しようとしています。たとえば、次のような奇妙なケースでもソリューションが機能することを望みます

<p>spaces infiltrating the ending tag</ p >

<img alt="unended singleton tags" src="foobar.png">

など。つまり、適切な DOM メソッドを使用している限り、文字間の文字数を見つけることができるようになることを願ってい<ます>

<div data-tag="<div>">HTML-like strings within attributes</div>

jQuery API (特に、DOM 挿入および一般属性サブセクションを含む操作セクション) を見てきましたが、役立つものは何もありません。

要素を考えると、現在私が持っている最良のアイデアnode

lengthOfEndTag = node.tagName.length + 3;

lengthOfStartTag = node.outerHTML.length
                 - node.innerHTML.length
                 - lengthOfEndTag;

もちろん、終了タグについてそのような仮定をしたくありません。

(最後に、私は正規表現に精通していますが、可能な限りそれらを避けようとしています。)


編集

@Pointy と @squint は</ p >、たとえば、DOM が作成されると HTML が破棄されるため、 を表示できないことを理解するのに役立ちました。それはいいです。調整された目的は、でレンダリングされるouterHTML開始タグと終了タグの長さを見つけることです。

4

2 に答える 2