0

ID の小さなリスト (約 10) があり、Html ページで対応する要素を取得したいとします。

各 ID で getElementbyId() を使用する必要がありますか、または次のように DOM を反復処理できますか。

for (var i = 0; i < element.childNodes.length; i++)
{
    var childNode = <HTMLElement>element.childNodes[i];

    if (this.Ids.indexOf(node.id, 0) >= 0)
            this.collection.setValue(node.id, <HTMLInputElement>node)

    if (childNode.childNodes.length > 0)
        this.iterateHtmlNodes(task, childNode);
}
  • これを行う最速の方法はどれですか?
  • 最良の方法はどれですか?
  • 取得する要素の数が多い (>100) 場合はどうすればよいですか?

TypeScriptを使用しています。

4

2 に答える 2

5

いずれにせよGetElementById、ブラウザではネイティブ関数サポートを使用するため、使用は高速になります。

于 2013-07-02T13:07:12.270 に答える
2

最速の方法は、基盤となる JS/Typescript エンジンの実装に依存するため、ベンチマークを実行して結果を確認する必要があります。

解析するドキュメントがIDの一意性に準拠している場合、私はこのgetElementByIdアプローチを採用します。実際のドキュメントでは、反復アプローチを使用する必要がある場合がありますが、同じ識別子を持つ要素が複数ある場合は、予期しない結果になることに注意してください。

また、「最良」はある程度の主観性を意味するため、コードを明確にするためにgetElementByIdオプションを使用します。

于 2013-07-02T13:17:03.143 に答える