0

ページ上のすべてのドロップダウン (選択) コントロールをループしたいという要件があります。以下を使用して、すべての DropDown コントロールを選択しています。

var DropDowns = document.getElementByTagName('select');

これらのドロップダウンをループして、いくつかのコントロールのオプションをプログラムで設定します。

for (i=0; i<= DropDowns.Length; i++)
{
    var CurrentControl = DropDowns[i];
    CurrentControl.options[CurrentControl.selectedIndex].value = 1;
}

キャッシングをサポートする Javascript フレームワークはありますか? Document オブジェクトを直接ループするのではなく、すべての DropDown コントロール名をキャッシュし、キャッシュされた名前をループしたいと考えています。

ループのパフォーマンスを向上させるコツはありますか?

4

4 に答える 4

1

30 ~ 40 個の要素を反復処理するだけのループのパフォーマンスが大幅に向上するとは思いませんが、一部のブラウザーではNodeListorの代わりに配列をループ処理することで速度が大幅に向上しHTMLCollectionます。 DOM レベル 1 を実装する一部のブラウザーで呼び出されます。

したがって、質問に答えるために、オブジェクトなどを配列に「キャッシュ」することができ、将来の反復のためにそのループを高速化する必要があります。

この配列は DOM のように「ライブ」ではないため、最新の状態に保つ必要があることに注意してください。

于 2013-02-21T18:12:18.070 に答える
0

いくつかの回答が説明するよりもはるかに効率的にこれをすでに行っていると思います。ドキュメントを継続的にループしているのではなく、のキャッシュNodeListをループしていることに注意してくださいDropDowns。これらの要素のそれぞれを変更したい場合は、必然的にそれらをループして個別に変更する必要があります。

于 2013-02-21T18:21:51.810 に答える
0

jquery では、次のようになります。

var $menus = $('select');
$.each($menus, function(index, menu) {
    // Do whatever you want to the menu here
};
于 2013-02-21T18:15:04.367 に答える
0

私は別のアプローチを提案しています - コンマで区切られた値を持つ非表示のフィールドにオプションを保存し、ページの読み込み時に , で区切られた値を解析してコントロールの値を設定します。

于 2013-02-21T18:17:38.347 に答える