0

ページに選択ボックスがあるとしましょうhtml。そして、その選択ボックスの値は、それほど小さくないオプションのリストを返す db クエリから取得されます。
同じオプションのリストを表示する別の 4 つの選択ボックスを追加する必要がある場合、コードを複製してブラウザに送り返す必要4*(select_box_result_size)がありますか?

4

2 に答える 2

3

サーバー側のコードをどのように管理しているかに関係なく、答えは、各選択ボックスに独自のオプション グループが必要だということです。とはいえ、すべてのオプションが同じであれば、データベースに対して 1 つのクエリのみを作成し、必要なすべての選択ボックスを 1 つの関数で生成する必要があります。データベースからオプションを取得し、それらを変数に格納して、ボックスを作成するだけです。

HTML では、各ボックスに値がハードコードされているため、クライアント側のコードには重複データが含まれることに注意してください。ただし、それは実際には問題ではありません。重要なのは、維持する必要のあるコードがクリーンであることと、データベースにできるだけストレスをかけないようにすることです。1 つのクエリ + 1 つの関数だけで十分です。


パフォーマンスが本当に問題である場合は、JavaScript を使用してコンボ ボックスを動的に生成する可能性が常にあります。基本的に、1 つを埋め込んでから、さらに 4 回コピーすることができます。ただし、これには次の 2 つの点を考慮する必要があります。

  1. これらのコンボ ボックスが原因でパフォーマンスの問題が発生しています? (おそらくそうではありません)
  2. コンボ ボックスが大きすぎて、JavaScript でボックスを 4 回コピーするよりも、ネットワーク接続を介して HTML を実際にロードする方が時間がかかりますか? (繰り返しますが、おそらくそうではありません... ボックスが長いほど、コピーに時間がかかることに注意してください。)

1000 以上のオプションがない限り、単純にボックスを 4 回生成することに固執することをお勧めします。その数がある場合は、次の 2 つのことを行います。

  1. 基準。コンボ ボックスが 1 つあるページと 4 つあるページの 2 つのページを作成し、サイズを比較します。次にロード時間を比較します。
  2. UI の改善を検討してください。おそらく、1000 のオプションがある場合、必要な要素の数を減らすために、エンド ユーザーが何らかのフィルタリング プロセスを実装する方がよいでしょう...つまり、世界のすべての都市を含むボックスがある場合は、1 つのボックスを選択する必要があります。次に、JSON リクエストを使用して該当する市区町村のみを市区町村ボックスに入力します。
于 2013-05-26T14:11:12.477 に答える
0

そして、その選択ボックスの値は、それほど小さくないオプションのリストを返す db クエリから取得されます。

使いやすさのために autosuggest を試すことができます。そのためのライブラリがありますが、独自のライブラリを作成してみることができます。

サーバー側のスクリプトによっては、同じデータが複数回 (4 回) 表示される場合は、4 回クエリを実行する代わりに、メモリ内のデータを取得して選択を生成するのが最善の方法です。

コードを複製する必要がありますか

重複しないことをお勧めします。少なくとも、選択リストを生成するヘルパー関数を作成できます。HTMLマークアップからコードを削除することに真剣に取り組んでいる場合は、テンプレートを使用してデータをそれにバインドできるようにする、多くのMVCフレームワークの1つを使用することを検討できます。

于 2013-05-26T14:13:33.437 に答える