[解決済み] HTMLのプロパティと属性の違いは何ですか?
質問
jQuery 1.6.1での変更後、HTMLにおけるプロパティと属性の違いを定義しようとしています。
のリストを見ると jQuery 1.6.1リリースノート (を見ると、HTMLのプロパティと属性は以下のように分類できるようです。
-
プロパティ。ブール値を持つもの、またはselectedIndexのようにUA計算されるもの全て。
-
アトリビュート。HTML要素に追加できる'属性'で、ブーリアンでもなく、UAが生成した値を含むものでもないもの。
ご感想は?
解決方法は?
HTMLのソースコードを書くときに 属性 をHTML要素に追加します。そして、ブラウザがコードを解析すると、対応するDOMノードが生成されます。このノードはオブジェクトであり、したがって プロパティ .
例えば、このHTML要素。
<input type="text" value="Name:">
は2つの属性(
type
と
value
).
このコードがブラウザで解析されると HTMLInputElement このオブジェクトには、accept, accessKey, align, alt, attributes, autofocus, baseURI, checked, childElementCount, childNodes, children, classList, className, clientHeight などの数多くのプロパティが含まれています。
与えられた DOM ノードオブジェクトに対して、properties はそのオブジェクトのプロパティ、attributes は
attributes
プロパティを使用します。
ある HTML 要素に対して DOM ノードが作成されると、そのプロパティの多くは、同じまたは類似した名前の属性に関連付けられますが、1 対 1 の関係ではありません。例えば、この HTML 要素の場合。
<input id="the-input" type="text" value="Name:">
対応する DOM ノードには
id
,
type
および
value
プロパティがあります。
-
は
id
プロパティは 反射型プロパティ に対してid
属性があります。プロパティを取得すると属性値が読み取られ、プロパティを設定すると属性値が書き込まれます。id
は 純粋 反映されたプロパティで、値を変更したり制限したりすることはありません。 -
は
type
プロパティは 反射型プロパティ に対してtype
属性があります。プロパティを取得すると属性値が読み取られ、プロパティを設定すると属性値が書き込まれます。type
に限定されているため、純粋な反射型プロパティではありません。 既知の値 (例えば、入力の有効な型)。もし、あなたが<input type="foo">
であればtheInput.getAttribute("type")
はあなたに"foo"
しかしtheInput.type
は、あなたに"text"
. -
これに対して
value
プロパティには反映されません。value
属性があります。その代わりに 現在値 の入力です。ユーザーが入力ボックスの値を手動で変更するとvalue
プロパティは、この変更を反映します。つまり、ユーザーが"John"
を入力ボックスに入力するとtheInput.value // returns "John"
のところです。
theInput.getAttribute('value') // returns "Name:"
は
value
プロパティは 現在 は入力ボックス内のテキストコンテンツであるのに対しvalue
属性には 初期 のテキストコンテンツはvalue
属性をHTMLソースコードから取得します。つまり、現在テキストボックスの中に何が入っているかを知りたければ、プロパティを読めばいいのです。しかし、テキストボックスの初期値が何であったかを知りたければ、属性を読みます。あるいは
defaultValue
プロパティを純粋に反映したものです。value
属性があります。theInput.value // returns "John" theInput.getAttribute('value') // returns "Name:" theInput.defaultValue // returns "Name:"
その属性が直接反映されるプロパティがいくつかあります(
rel
,
id
)、いくつかは直接の反射であり、わずかに異なる名前を持っています (
htmlFor
を反映しています。
for
属性があります。
className
が反映されます。
class
属性)、多くはその属性を反映しているが制限や修正が加えられているもの(
src
,
href
,
disabled
,
multiple
) などのようになります。
仕様書
は、さまざまな種類のリフレクションをカバーしています。
関連
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
jsを使った簡単な照明スイッチのコード
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules