以下の 2 つの使用法の違いは何ですか?
document.getElementById('myRadio').checked = "checked";
と
document.getElementById('myRadio').checked = true;
私にとっては、どちらも同じように動作しています。しかし、同じことを行う方法が 2 つ存在する理由を知りたいだけです。
理想的な使い方はどれでしょう?IE7 以降のバージョンをサポートする必要があります。
以下の 2 つの使用法の違いは何ですか?
document.getElementById('myRadio').checked = "checked";
と
document.getElementById('myRadio').checked = true;
私にとっては、どちらも同じように動作しています。しかし、同じことを行う方法が 2 つ存在する理由を知りたいだけです。
理想的な使い方はどれでしょう?IE7 以降のバージョンをサポートする必要があります。
document.getElementById('myRadio').checked
ブール値です。true
またはする必要がありますfalse
document.getElementById('myRadio').checked = "checked";
文字列をブール値にキャストします。これは本当です。
document.getElementById('myRadio').checked = true;
true
キャストせずに割り当てるだけです。
true
わずかに効率的であり、メンテナに明らかにする意図が強いため、使用してください。
要素には、属性と。という名前のプロパティの両方がありますchecked
。プロパティは現在の状態を決定します。
属性は文字列であり、プロパティはブール値です。要素がHTMLコードから作成される場合、属性はマークアップから設定され、プロパティは属性の値に応じて設定されます。
マークアップに属性の値がない場合、属性はになりますnull
が、プロパティは常にtrue
またfalse
はであるため、になりfalse
ます。
プロパティを設定するときは、ブール値を使用する必要があります。
document.getElementById('myRadio').checked = true;
属性を設定する場合は、次の文字列を使用します。
document.getElementById('myRadio').setAttribute('checked', 'checked');
属性を設定してもプロパティは変更されますが、プロパティを設定しても属性は変更されないことに注意してください。
属性をどのような値に設定しても、プロパティは。になることにも注意してくださいtrue
。空の文字列またはを使用する場合でもnull
、属性を設定すると、それがチェックされます。属性を使用removeAttribute
して要素のチェックを外すために使用します。
document.getElementById('myRadio').removeAttribute('checked');
元のchecked
属性 (HTML 4 以前) には値が必要ありませんでした。値が存在する場合、要素は「チェック」され、存在しない場合はチェックされませんでした。
ただし、これは HTML 4 に準拠した XHTML では有効ではありません。
true の条件として使用することを提案した標準checked="checked"
- したがって、投稿した両方の方法が同じことをすることになります。
どちらを使用するかは実際には問題ではありません。自分にとって最も意味のあるものを使用し、それに固執してください (または、どちらに進むかについてチームと合意します)。
document.getElementById('myRadio')
DOM要素を返しますelem
。この回答のように参照します。
elem.checked
DOM要素の名前付きプロパティにアクセスします。checked
このプロパティは常にブール値です。
HTMLを書くときはchecked="checked"
、XHTMLで使用します。HTMLでは、単にを使用できますchecked
。一部のブラウザは空の値が存在しないと見なすため、属性を設定するとき(これはを介して行われ.setAttribute('checked', 'checked')
ます)、値を指定する必要があります。
ただし、DOM要素があるため、属性を設定する理由はありません。これは、-はるかに快適な-ブールプロパティを使用できるためです。空でない文字列はtrue
ブール値のコンテキストで考慮されるため、偽の値(偶数または)ではないものに設定elem.checked
すると、チェックボックスがオンになります。使用しない理由はありませんが、適切な値を使用する必要があります。'checked'
'false'
'0'
true
false
checked
attribute はブール値なので、boolean以外"checked"
の other の値は に変換されます。"string"
false
true
任意の文字列値が true になります。属性の存在もそれを真にします:
<input type="checkbox" checked>
JSを使用してDOMでブール値の変更を行うだけで、チェックを外すことができます。
したがって、答えは次のとおりです。それらは等しいです。