HTMlにおけるidとnameの違い
HTMlにおけるidとnameの違い
回転:http://ii7090.blog.sohu.com/71020058.html
本文: Web開発をした人のほとんどが、要素のIDとNameの違いは何なのかと聞いたことがあると言えます.なぜIDがあってもNameがあるのか?!同じように私たちも最もclassicalの答えを得ることができます:IDは一人の身分証明書番号のようで、Nameは彼の名前のようで、IDは明らかに唯一で、Nameは繰り返すことができます.
先週私もIDとNameの問題に遭遇し、ページにinput type=「hidden」と入力し、ID='SliceInfoと1つしか書かず、付与後submit、バックグラウンドでRequest.Params["SliceInfo"]を使ってもなかなか値が出ませんでした.その後、Nameで表示すべきだと悟ったので、inputにName='SliceInfo'を追加して、すべてokになりました.
最初の段落ではIDとNameの解答についてあまりにも漠然としていて、もちろんその解釈はIDにとって完全に正しいので、Client側のHTML要素のIdentityです.Nameは実は複雑で、Nameには多くの用途があるため、IDに完全に取って代わることができず、キャンセルすることはできません.具体的な用途は次のとおりです.
用途1:input、select、textarea、buttonなど、サーバと対話可能なHTML要素のサーバ側の表示として.サーバ側では、そのNameに基づいてRequest.Paramsを介して要素がコミットした値を取得できます. 用途2:HTML要素Input type='radio'パケットは、radio buttonコントロールが同じパケットクラスにあることを知っています.check操作はmutexで、同じ時間に1つのradioしか選択できません.このパケットは同じName属性に基づいて実現されます. 用途3:ページ内のアンカーを作成するには、linkがページスーパーリンクを取得することを知っています.hrefプロパティを使用しないで、のようにNameを変更すると、ページアンカーが得られます. 用途4:Applet、Object、EmbedなどのオブジェクトとしてのIdentity.たとえばAppletオブジェクトインスタンスでは、そのNameを使用してオブジェクトを参照します. 用途5:IMG要素とMAP要素を関連付ける場合、IMGのホットスポット領域を定義するには、その属性usemapを使用して、usemap=「#name」(関連付けられたMAP要素のName)にする必要があります. 用途6:attribute,meta,paramなどの特定の要素の属性.たとえば、Objectのパラメータ
明らかにこれらの用途はIDの代わりに簡単に使えるものではないので、HTML要素のIDとNameの違いは身分証明書番号と名前の違いではなく、本来は異なる役割を果たしているものです.
もちろんHTML要素のName属性は、DHTMLオブジェクトツリーでdocument.getElementsByNameを使用して、ページ内の指定したName要素をすべて含むオブジェクト配列を取得することができるため、ページ内のIDの役割を果たすこともできます.Name属性にはもう1つの問題があります.Name属性を含む要素を動的に作成する場合、付与element.name=「...」を単純に使用してNameを追加することはできません.Elementを作成するときにdocument.createElement('
<scrīpt language="Javascrīpt">
var input = document.createElement('INPUT');
input.id = 'myId';
input.name = 'myName';
alert(input.outerHTML);
</scrīpt>
メッセージボックスに表示される結果は、です.<scrīpt language="Javascrīpt">
var input = document.createElement('<INPUT name="myName">');
input.id = 'myId';
alert(input.outerHTML);
</scrīpt>
メッセージボックスに表示される結果は、です. Name属性を初期化するこのデザインはIEの欠陥ではありません.MSDNではそうすると言っていますが、このようなデザインの原理は何ですか.私はしばらくよく分からなかった.ちなみに、ページにn(n>1)個のHTML要素のIDが同じになったらどうしますか?DHTMLオブジェクトでどのように彼らを引用しますか?ASPXページを使用すると、aspnetプロセスはaspxページを処理する際にIDが一意ではないことを全く許さないため、ページが異常に投げ出され、正常なrenderにはならない.動的ページかどうか、IDを繰り返してもらうにはどうすればいいですか?このときdocument.getElementByIdを使用してオブジェクトを取得し続けることができますが、IDが重複しているオブジェクトのうちHTML Rendererで最初に現れたオブジェクトしか取得できません.このとき重複するIDは参照時に自動的に1つの配列となり,ID重複する要素はRenderの順に配列中に存在する.
記事のコメント:
IDはhtmlページの内部要素と関係があり、ページ要素の内容とは関係ありません.nameは、ページ要素の内容に関連しています.
Referenceを見て、nameにはもう一つの用途がありますwindow.name、スレ主はこれも1つ計算することができますか?最も一般的なのはwindows.openの2番目のパラメータで、用的target来使用.iframe:frame和iframe的name properti也有.iframe的name稍微特殊,在上次1个问题的时候应该使用name,几乎忘记具体的事情,多分iframe页中的onload()/onclick()改变iframe的大小~~name是frame,iframe&frameset的Identity,有什么特别的地方?你所说的onload()/onclick()是引用使用frame的名字吧?iframe使用直接id取得的是window办公室(name可以取得element办公室),boynannan说的问题是这个.不知道推测是否正确.