47

以下の 2 つの使用法の違いは何ですか?

document.getElementById('myRadio').checked = "checked";

document.getElementById('myRadio').checked = true;

私にとっては、どちらも同じように動作しています。しかし、同じことを行う方法が 2 つ存在する理由を知りたいだけです。

理想的な使い方はどれでしょう?IE7 以降のバージョンをサポートする必要があります。

4

5 に答える 5

59

document.getElementById('myRadio').checkedブール値です。trueまたはする必要がありますfalse

document.getElementById('myRadio').checked = "checked";文字列をブール値にキャストします。これは本当です。

document.getElementById('myRadio').checked = true;trueキャストせずに割り当てるだけです。

trueわずかに効率的であり、メンテナに明らかにする意図が強いため、使用してください。

于 2012-05-18T09:46:15.120 に答える
15

要素には、属性と。という名前のプロパティの両方があります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');
于 2012-05-18T09:52:09.007 に答える
9

元のchecked属性 (HTML 4 以前) には値が必要ありませんでした。値が存在する場合、要素は「チェック」され、存在しない場合はチェックされませんでした。

ただし、これは HTML 4 に準拠した XHTML では有効ではありません。

true の条件として使用することを提案した標準checked="checked"- したがって、投稿した両方の方法が同じことをすることになります。

どちらを使用するかは実際には問題ではありません。自分にとって最も意味のあるものを使用し、それに固執してください (または、どちらに進むかについてチームと合意します)。

于 2012-05-18T09:43:48.803 に答える
6

document.getElementById('myRadio')DOM要素を返しますelem。この回答のように参照します。

elem.checkedDOM要素の名前付きプロパティにアクセスします。checkedこのプロパティは常にブール値です。

HTMLを書くときはchecked="checked"、XHTMLで使用します。HTMLでは、単にを使用できますchecked。一部のブラウザは空の値が存在しないと見なすため、属性を設定するとき(これはを介して行われ.setAttribute('checked', 'checked')ます)、値を指定する必要があります。

ただし、DOM要素があるため、属性を設定する理由はありません。これは、-はるかに快適な-ブールプロパティを使用できるためです。空でない文字列はtrueブール値のコンテキストで考慮されるため、偽の値(偶数または)ではないものに設定elem.checkedすると、チェックボックスがオンになります。使用しない理由はありませんが、適切な値を使用する必要があります。'checked''false''0'truefalse

于 2012-05-18T09:46:29.660 に答える
3

checkedattribute はブール値なので、boolean以外"checked"の other の値は に変換されます。"string"falsetrue

任意の文字列値が true になります。属性の存在もそれを真にします:

<input type="checkbox" checked>

JSを使用してDOMでブール値の変更を行うだけで、チェックを外すことができます。

したがって、答えは次のとおりです。それらは等しいです。

w3c

于 2012-05-18T09:44:51.897 に答える