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');

10-04 22:17
查看更多