0

HTML チェックボックスのchecked値を false に初期化しようとしています。ただし、設定してすぐにその値をログに記録しようとすると、まだ true として表示され、チェックボックスはオンのままです。

checkedプロパティが JavaScript を介してその値を明示的に設定することを無視する原因は何ですか?

console.log( "setting", self.checkbox.testid, "to", self.checked );
self.checkbox.checked = self.checked;
console.log( self.checkbox.testid + " checked: ", self.checkbox.checked ); // still true
4

3 に答える 3

1

他の方法を試してください:

jQuery を使用している場合:

$('#myCheckbox').removeAttr('checked');

そうでない場合は、チェックボックスに ID を設定して、正しい要素を扱っていることを確認してください。

document.getElementById('myCheckbox').checked = false;
于 2012-08-23T18:28:03.697 に答える
1

あはは!実際、問題checkedはチェックボックスのプロパティではなく、設定しようとしていた値にありました。

明示的に変更self.checkedすると、機能するようになりました。false問題は、なぜ「false」としてログに記録されるのかということですが、その「false」値は実際にはそうではありませんfalse!

...

はい、確かに、ログに記録typeof self.checkedすると、実際には「false」の値を持つ文字列です! もちろん、文字列 "false" は実際には真実です。なんと欺瞞的!

ここで問題は、一体なぜ文字列が self.checked なのかということですが、それは私自身の問題です。人々を通してそれを考えるのを手伝ってくれてありがとう。

于 2012-08-23T18:31:04.563 に答える
0

プログラムでチェックボックスの値をクロスブラウザーで変更するには、次のようにする必要があります。

チェックボックス.checked = チェックボックス.defaultChecked = false;
于 2012-08-23T18:36:44.537 に答える