HTML要素のID属性とName属性の違い

HTML要素のID属性とName属性の違い
今日、私は <a href="#13"></a> について少し混乱しています。# を追加するとアンカーが示され、13 を追加するとこのページの 13 番目の位置にジャンプしますが、この 13 は Name 属性値です。なぜID値ではないのですか? ? ?そこでIDと名前の違いを確認し記録しました

最も典型的な答えは、ID は人の ID 番号のようなもので、Name は名前のようなものです。ID は明らかに一意ですが、Name は繰り返すことができます。
明らかに、ID と Name に対する答えは一般的すぎます。もちろん、クライアント側の HTML 要素の ID である ID については、その説明は完全に正しいです。名前は実際にははるかに複雑です。名前には多くの用途があるため、ID で完全に置き換えてキャンセルすることはできません。具体的な用途は次のとおりです。
目的 1: input、select、textarea、button など、サーバーとデータを交換できる HTML 要素のサーバー側マーカーとして。サーバー側では、要素の名前に基づいて、Request.Params を通じて要素によって送信された値を取得できます。
使用法 2: HTML 要素 Input type='radio' のグループ化。ラジオ ボタン コントロールは同じグループ クラスにあり、チェック操作は mutex であることがわかっています。一度に選択できるラジオ ボタンは 1 つだけです。このグループ化は、同じ Name 属性に基づいて実現されます。
使用方法 3: ページにアンカーを作成します。<a href="URL">link</a> はページ ハイパーリンクを取得するために使用します。href 属性を使用せず、代わりに Name (例: <a name="PageBottom"></a>) を使用すると、ページ アンカーが取得されます。
アプリケーション 4: アプレット、オブジェクト、埋め込み、その他の要素などのオブジェクトの ID として。たとえば、Applet オブジェクトのインスタンスでは、その名前を使用してオブジェクトを参照します。
使用方法5:IMG要素をMAP要素に関連付ける際に、IMGのホットスポット領域を定義する場合は、その属性usemapを使用する必要があります。つまり、usemap="#name"(関連付けられたMAP
要素の名前)。
使用法 6: attribute、meta、param などの特定の要素の属性。たとえば、オブジェクトのパラメータ <PARAM NAME = "appletParameter" VALUE = "value"> を定義したり、Meta でパラメータ <META NAME = "Author" CONTENT = "Dave Raggett"> を定義したりします。
当然ながら、これらの用途は単純に ID に置き換えることはできません。そのため、HTML 要素の ID と名前の違いは、ID 番号と名前の違いとは異なり、基本的には機能が異なるものとなります。
次のようなコードで微妙な違いを分析できます。

コードをコピー
コードは次のとおりです。

<form メソッド="post" アクション="" 名前="デモフォーム">
<input type="text" name="oDemo" id="oDemo2" value="デモ" />
</フォーム>

IE ブラウザでは、このテキスト ボックス オブジェクトをインデックスするために使用できるメソッドはいくつありますか? (区別するために、NAMEとIDを異なる値に設定します)
1. デモ
2. デモフォーム.oDemo
3. ドキュメント.all.oDemo
4. document.all.demoform.oDemo
5. document.forms[0].oDemo
6. document.forms['demoform'].oDemo
7. document.forms['デモフォーム'].childNodes[0]
8. document.forms['デモフォーム'].elements[0]
9. document.getElementById('oDemo2')

上記の 9 つのインデックス作成方法はすべて IE6 の戻り値テストに合格しましたが、最後の 1 つは注目に値します。IE6 では、インデックス オブジェクトを document.getElementById('oDemo') として記述しましたが、ブラウザーはオブジェクトを正しくインデックスできました。なんともひどいフォールト トレランスです。 !
ここで問題が発生します。このコードを Mozilla Firefox 1.0 に挿入して再度実行します。7 番目のメソッドのみが「undefined」を返し、他のメソッドはオブジェクトを正しくインデックスできます。ただし、3 番目と 4 番目のメソッドは IE 固有のオブジェクト document.all を使用するため、FF1.0 は正しい値を返しますが、コンソールに警告が表示されます: 警告: 非標準プロパティ document.all。 W3C標準フォームdocument.getElementById()を使用してください。

次に、HTML テキスト タイプをより厳密に定義し、ソース コードの先頭に次のコードを追加します: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> HTML テキストを HTML4.01 標準に従って解析します。IE6 では、すべての戻り値テストは引き続き合格しますが、Mozilla Firefox 1.0 では多くの問題が発生します。3 番目と 4 番目のメソッドには戻り値がなく、コンソールにエラー メッセージが表示されます: エラー: document.all にプロパティがありません。7 番目のメソッドは引き続き「undefined」を返します。
まとめ
NAME は主に、フォームがサーバー側スクリプトに送信され、その後変数処理を受け取るインタラクティブな Web ページで使用されます。ソースコードの標準化と互換性の観点から、クライアントスクリプト内のオブジェクトをインデックスする場合は、
ドキュメント.getElementById()
もう一つの簡単な例を次に示します。
<フォーム名="form1">
ユーザー名: <input type=text name="username" id="username">
パスワード: <input type=password name="password" id="pwd">
</フォーム>
ユーザー名とパスワードを取得したい場合、JS が name を使用して取得する場合は、document.form1.username.value と記述する必要があります。
document.form1.パスワード値;
IDで取得:
document.getElementById("ユーザー名");
ドキュメントの要素IDを取得します。
name に同じ名前が出現する場合があり、name を使用して値を取得すると、どの値が取得されるかわかりません。
document.getElemntsByName("ユーザー名");
ここで得られるのは配列です

<<:  フローティングをクリアするいくつかの方法(推奨)

>>:  CSS3 で六角形の境界線を実装するサンプルコード

ブログ    

推薦する

Vueプロジェクトをパッケージ化してリリースする手順

目次1. 開発環境から本番環境への移行2. 統一されたリクエストパスを設定する3. パッケージ化コマ...

flexとは何か、flexレイアウト構文の詳細なチュートリアル

フレックスレイアウトFlex は Flexible Box の略で、「柔軟なレイアウト」を意味します...

Nginx で limit_req_zone を使用して同じ IP へのアクセスを制限する方法

Nginx は、ngx_http_limit_req_module モジュールの limit_req...

よく使われるシングルページアプリケーションウェブサイト共有

CSS3お願いしますこのウェブサイトを自分で見て、パラメータを変更し、CSS3効果をオン/オフにする...

Vue ログインページ用の動的パーティクル背景プラグインの実装

目次動的パーティクル効果は次のとおりです。プラグインをインストールする動的パーティクル効果は次のとお...

Linux yum パッケージ管理方法

導入yum (Yellow dog Updater, Modified) は、Fedora、RedH...

CSSファイルをインポートする3つの方法の詳細な説明

CSS を導入する方法には、インライン スタイル、内部スタイル シート、外部スタイル シートの 3 ...

ウェブページの広告デザインにおけるウェブデザインの寸法とルール

1. 800*600 未満の場合、Web ページの幅が 778 以内であれば、水平スクロール バーは...

docker を使用して Windows 10 Home バージョンで Laravel 開発環境を構築する方法の詳細なチュートリアル

オペレーティング·システム: Win10 ホームエディションDockerをインストールします:公式サ...

UbuntuへのDocker CEのインストール

この記事は、Ubuntu 17.10 での Docker CE のインストールを記録するために使用さ...

MySQL はどのようにしてマスターとスレーブの一貫性を確保するのでしょうか?

目次MySQLマスタースレーブの基本原理3つのbinlog形式の比較混合形式のバイナリログが存在する...

WeChat アプレットのカスタム タブバー コンポーネント

この記事では、WeChatアプレットのカスタムタブバーコンポーネントの具体的なコードを参考までに紹介...

Vue3の組み込みコンポーネントであるTeleportの使い方を詳しく説明します

目次1. テレポートの使用2. モーダルダイアログコンポーネントを完成させる3. コンポーネントのレ...

CSS の Display、Visibility、Opacity、rgba、z-index: -1 の違い

ウェブページ上のいくつかの要素の非表示、透明、その他のプロパティを制御する必要があることがよくありま...

mysql57サービスが突然消えた問題をすぐに解決する

1つ、 G:\MySQL\MySQL Server 5.7\bin> mysqld --ini...