![](/img/trans.png)
[英]Why window properties like `scrollY` don't update automatically after assignment?
[英]Why don't JavaScript properties update automatically?
我有一个具有存储复选框的checked
属性的属性的对象,如下所示:
var x = { isChecked: document.querySelector("input").checked }; function getX() { (x.isChecked ? console.log("checkbox is checked") : console.log("checkbox is not checked")); }
<input type="checkbox"> <button onclick="getX()">is the checkbox checked?</button>
选中和取消选中复选框时, isChecked
属性的值不会更新。 为什么会这样?
由于.checked
是一个布尔值,而不是一个对象,当你说isChecked: document.querySelector("input").checked
,你只是将isChecked
设置为element.checked
的当前值。 使isChecked
成为一个函数以在每次需要时获取实际值。
var x = { isChecked: () => document.querySelector("input").checked }; function getX() { (x.isChecked() ? console.log("checkbox is checked") : console.log("checkbox is not checked")); }
<input type="checkbox"> <button onclick="getX()">is the checkbox checked?</button>
或者,如果您想继续使用isChecked
而不是isChecked()
,并且您希望能够使用该变量手动设置它,您可以使用 getter 和 setter,如下所示:
var x = { get isChecked() { return document.querySelector("input").checked; }, set isChecked(checked) { return document.querySelector("input").checked = checked; } }; function getX() { (x.isChecked ? console.log("checkbox is checked") : console.log("checkbox is not checked")); }
<input type="checkbox"> <button onclick="getX()">is the checkbox checked?</button> <button onclick="x.isChecked = false">uncheck</button> <button onclick="x.isChecked = true">check</button>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.