0

DOM 内のほぼすべてのアイテムが「id」属性を持つことができることを知っており、それを使用して、クライアントのテーブル内の各クライアントを追跡しています。また、IDを繰り返す必要がないことも承知しています。私のコードでは、行のIDは各人の「clientId」に設定されています。これはデータベース内の一意のキーに由来するため、繰り返しはありません...しかし、ページの他の場所には「問題」テーブルがあります。各行の ID を「issueId」(これも一意のキー) に設定していますが、clientId が issueId と一致する可能性があることに気付きましたが、その結果はわかりません。

後で呼び出すことができるように、各行を識別する方法を探しています。これに優先して使用できる別の属性はありますか? ID を割り当てるときに、番号の前に「クライアント」という単語を追加する必要がありますか? 標準的なプラクティスを使用して、ここで高速な Web アプリを作成したいと考えています。

クライアントと問題番号が一致していれば問題ありません。探しているクライアントを常に把握しており、検索するときに最初にテーブルにドリルダウンできるからです。「id」を使用したくないのは、id を繰り返すのは違法だからです。たとえば、問題を探している場合は、次のようなものを使用できます。document.getElementById("issueTable").getElementBySOMETHING(issueId)ただの代わりにdocument.getElementBySOMETHING(issueId)

4

3 に答える 3

3

classの代わりに使用しidます。

getElementsByClassName(); // needs a shim for IE8 and lower
于 2013-01-25T00:10:04.617 に答える
1

競合がないことを確認するには、id値に一意のプレフィックスを追加できます (たとえば、client-Xまたはissue-X.
現在、同じキーを共有していても、この接頭辞によりid属性はそれぞれ異なります。次に、ルックアップ コードを次のように変更できます。

document.getElementById('issue-'+key); // get by issue
document.getElementById('client-'+key); // get by client

これは、1 回のルックアップで要素を取得できることを意味し、最速のメソッドのgetElementById1 つを使用します。さらに、この方法は、CSS ルールを使用して要素のスタイルを変更したい場合に、前世代のブラウザーで数字で始まるキーに問題が発生しないことを意味します。

于 2013-01-25T00:20:58.200 に答える
0

getElementById() - ID によって要素への参照を返します。

getElementsByClassName() - 指定されたすべてのクラス名を持つ要素のセットを返します。ドキュメント オブジェクトで呼び出されると、ルート ノードを含む完全なドキュメントが検索されます。任意の要素で getElementsByClassName を呼び出すこともできます。指定されたクラス名を持つ指定されたルート要素の子孫である要素のみを返します。

getElementsByTagName() - 指定されたタグ名を持つ要素のリストを返します。要素自体を除いて、指定された要素の下のサブツリーが検索されます。返されるリストはライブです。つまり、DOM ツリーで自動的に更新されます。したがって、同じ要素と引数で element.getElementsByTagName を何度も呼び出す必要はありません。

querySelectorAll() - 指定されたセレクターのグループに一致するドキュメント内の要素のリストを返します (ドキュメントのノードの深さ優先の事前順トラバーサルを使用)。返されるオブジェクトは NodeList です。

フォント:

http://www.quirksmode.org/dom/w3c_core.html#gettingelements

https://developer.mozilla.org/en-US/docs/DOM/

于 2013-01-25T00:22:39.630 に答える