Commment.isDefault的计算结果为“ true”或“ false”。
目标是动态更新复选框。
这有效:
if (Comment.isDefault == 'false'){
// console.log("Checked.");
$('#chkDefault'+ i).prop('checked', true);
}
else {
// console.log("NOT Checked.");
$('#chkDefault'+ i).prop('checked', false);
}
这不起作用:
$('#chkDefault'+ i).prop('checked', Comment.isDefault);
无效的情况仅会使每个复选框为TRUE。
我想要更优雅的解决方案,还要理解为什么仅使用变量来设置属性是行不通的。
有什么想法吗?非常感激!
最佳答案
如果您尝试这样做:
console.log(typeof Comment.isDefault); // string
console.log(typeof "false"); // string
console.log(typeof false); // bool
总是
true
也不是空字符串(!
返回反布尔值,因此!!
返回等效的布尔值) console.log(!!"true") // true
console.log(!!"false") // true
console.log(!!"") // false
console.log(!!true) // true
console.log(!!false) // false
您必须更新(最佳选择):
Comment.isDefault = true; // or = false; instead of 'true'
或者,您也可以测试字符串值(如果无法轻松更新
Comment.isDefault
值):$('#chkDefault'+ i).prop('checked', Comment.isDefault == 'true');