Javascript平等的怪异

Javascript equality weirdness

本文关键字:Javascript      更新时间:2023-09-26

我正试图通过ajax获取一些数据。其中一个数据决定是否默认选中复选框。如果返回的变量isVisible1,则应选中它;如果是0,则应取消选中它。这是代码:

$.getJSON(myUrl, function(result)
    {
        isVisible = result.isVisible;
        // snip...
    } );

稍后在代码中:

var isChecked = (isVisible) ? true : false;
$("#visible").attr('checked', isChecked);

问题是,无论isVisible是否设置为1或0,checked变量总是被求值为true。我真的不确定问题出在哪里。也许isVisible被当作字符串处理??如何解决此问题?

可能isVisible是一个字符串。"0"在Javascript中是一个真实的值。使用这个替代:

var checked = (isVisible==="1") ? true : false;

怎么样

isVisible = (result.isVisible == "1")

我猜"isVisible"是一个字符串而不是数字,所以它通过了测试。试试parsent(isVisible,10),一个让我知道

Ajax是异步的。您需要使用回调。
$.getJSON(myUrl, function(result)
{
    isVisible = result.isVisible;
    // snip...
    callback_setvis();
} );
function callback_setvis(){
     var ischecked = (isVisible) ? true : false;
     $("#visible").attr('checked', ischecked);
}

在再次回顾您的问题后,以上内容似乎不起作用。

这可能是attrprop 的问题

如果您在jQuery 1.6或更高版本中,您应该执行以下操作:

  $("#visible").prop('checked', ischecked);