4

私は大規模なWebアプリケーションプロジェクトに取り組んでおり、前のデザイナーは、名前属性よりもフィールドを形成するためのハンドルとしてIDを使用することを好みました。

これの利点の1つは、Javascriptを介したそのフィールドのルックアップがIDを介して高速になることだと思います。

しかし、私が今直面している大きな問題は、IDがグローバルスコープを持っていることです。データベースの列名の大規模なセットを、列が属するテーブルを識別するための列名プレフィックスを含まない、より標準的な命名スキームにリファクタリングしたいと思います。これにより、IDを使用するフォームで問題が発生します。これは、フィールドIDが列名に直接対応しているためです。「zon_name」や「pro_name」などの列名は、どちらも「name」になります。これにより、HTMLで一意でないIDが発生します。

それで、その長い前文の後、ここに私の質問があります...

IDの代わりに名前属性を使用するようにすべてのフォームを変更してこのスコープの問題に対処しようとする前に、元の開発者が検索の高速性以外にIDを使用した可能性があると考えていない理由は他にありますか?

私はこれが長いものであることを知っているので、読み通して良い答えを与えるのに十分勇敢な人に感謝します。ありがとう!

4

3 に答える 3

4

名前とIDは異なることを行います。いくつかの重複はありますが、最も重要なことと互換性はありません。

名前を使用

  • フォームがサーバーに送信されたときにデータに与えられるキーを決定するには
  • ラジオグループを作成するには
  • 一度に複数のフォームコントロールを参照する必要がある場合(およびクラスを追加する場合や要素タイプを使用する方が適切でない場合)、JS/CSSから

IDを使用

  • コントロールのfor属性で<label>
  • 特定の入力を参照する必要がある場合はJS/CSSから

これの利点の1つは、Javascriptを介したそのフィールドのルックアップがIDを介して高速になることだと思います。

それほど重要ではありません(特に名前が一意の場合)。

元の設計者は標準の規則に従っておらず、JavaScriptに大きく依存するものを考え出したようです。

于 2011-10-03T22:27:33.750 に答える
3

フォームを使用している場合は<label for="aFormElement">、フォーム要素と一緒に使用する必要があります。

for属性は、属性ではなく属性とlabel一致します。idname

したがって、(とりわけ)サーバー側のコードの両方 が本当に必要です。idlabel name

于 2011-10-03T22:28:33.980 に答える
1

要素を見つける速度についてはid、フォームだけで設定できます。
次に、フィールドを使用nameして次のように読み取ります。

var form = document.getElementById('theForm'),
    productName = form.productName.value;
于 2011-10-03T22:32:26.150 に答える