我有一個具有存盤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屬性的值不會更新。為什么會這樣?
uj5u.com熱心網友回復:
由于.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>
或者,如果您想繼續使用它 withisChecked和 not 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>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/338024.html
標籤:javascript html dom 特性
下一篇:如何通過cpf得到銷售的總結果?
