ホームページ > 記事 > ウェブフロントエンド > HTML 要素の ID 属性と Name 属性の違いの詳細な紹介
Web 開発を行ったことのあるほぼすべての人が、要素の ID と名前の違いは何なのかを尋ねたことがあると言えます。 ID があるのに、なぜ名前が必要なのでしょうか?! また、最も古典的な答えも得られます。ID は人の ID 番号のようなもので、名前は ID が明らかに一意であり、名前は反復可能です。
先週、私はページに入力 type="hidden" を入力し、値を割り当てた後、それを送信して Request.Params[" を使用しました。 SliceInfo" がバックグラウンドで表示されます。"] しかし、何があってもそれだけの価値はありません。その後、Name でマークする必要があることに突然気づき、入力に Name='SliceInfo' を追加しました。すべて問題ありませんでした。
最初の段落の ID と名前に対する答えは一般的すぎます。もちろん、クライアント側の
HTML 要素 の ID である ID については、その説明は完全に正しいです。 Name は実際にはもっと複雑です。Name には多くの用途があるため、完全に ID に置き換えることはできず、ID をキャンセルします。具体的な用途は次のとおりです:
用途 1: 入力、選択、テキストエリア、ボタンなど、サーバーと対話できる HTML 要素のサーバー側インジケーターとして。サーバー側の名前に基づいて、Request.Params を通じて要素によって送信された値を取得できます。
使用 2: HTML 要素の入力 type='radio'
Group、ラジオ ボタン コントロールが同じグループ化クラスにあり、チェック操作がミューテックスであることがわかり、同時に選択できるラジオは 1 つだけです。このグループ化は同じ Name 属性に基づいて それを実現します。 目的 3: ページに
アンカー ポイント を作成します。91d83b4822db6c9c4aabe5918601cc24link5db79b134e9f6b82c0b36e0489ee08ed は、href 属性を使用しない場合に使用します。代わりに、< ;a name="PageBottom">5db79b134e9f6b82c0b36e0489ee08ed のように、ページ アンカーを取得します。 使用 4: アプレット、
オブジェクト、埋め込み、その他の要素などのオブジェクトとしてのアイデンティティ。たとえば、アプレット オブジェクト インスタンスでは、その名前を使用してオブジェクトを参照します。 使用5: IMG要素と
MAP要素を関連付けるときに、IMGのホットスポット領域を定義したい場合は、その属性usemapを使用する必要があるため、usemap="#name"(関連付けられた要素の名前) MAP 要素)。 使用 6: 特定の要素の属性 (attribute、meta、param など)。たとえば、オブジェクトのパラメータ またはメタの を定義します。
明らかに、これらの用途は単純に ID に置き換えることはできません。そのため、HTML 要素の ID と名前の違いは、ID 番号と名前の違いではありません。それらは異なる機能を持っています。
もちろん、HTML 要素の Name 属性は、ページ内で ID としての役割を果たすこともできます。DHTML オブジェクト ツリーでは、 document.getElementsByName を使用して、ページ内の指定されたすべての Name 要素を含むオブジェクト配列を取得できるためです。 。 Name 属性には別の問題があります。Name 属性を含むことができる要素を動的に作成する場合、単純に assign element.name = "..." を使用してその Name を追加することはできません。要素を作成すると、'65ff708cb6191b3f5a743bae5d811b9fa24c0203f0ae689239f065103120aae7') 要素に Name 属性が追加されます。これはどういう意味ですか?以下の例を見て理解してください。
<script language="JavaScript"> var input = document.createElement('INPUT'); input.id = 'myId'; input.name = 'myName'; alert(input.outerHTML); </script>
メッセージ ボックスに表示される結果は、7c4910ae3e1ff2731c00ced15cbfeb3c です。
<script language="JavaScript"> var input = document.createElement('<INPUT name="myName">'); input.id = 'myId'; alert(input.outerHTML); </script>
消息框里显示的结果是:fcd57d8d6086a1073f231e2d47bdc82a。
初始化Name属性的这个设计不是IE的缺陷,因为MSDN里说了要这么做的,可是这样设计的原理什么呢?我暂时没有想太明白。
这里再顺便说一下,要是页面中有n(n>1)个HTML元素的ID都相同了怎么办?在DHTML对象中怎么引用他们呢?如果我们使用ASPX页面,这样的情况是不容易发生的,因为aspnet进程在处理aspx页面时根本就不允许有ID非唯一,这是页面会被抛出异常而不能被正常的render。要是不是动态页面,我们硬要让ID重复那IE怎么搞呢?这个时候我们还是可以继续使用document.getElementById获取对象,只不过我们只能获取ID重复的那些对象中在HTML Render时第一个出现的对象。而这时重复的ID会在引用时自动变成一个数组,ID重复的元素按Render的顺序依次存在于数组中。
以上がHTML 要素の ID 属性と Name 属性の違いの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。