Javascript平等怪异

时间:2011-06-30 15:04:10

标签: javascript jquery equality

我正在尝试通过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被视为一个字符串?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

可能isVisible是一个字符串。 "0"是Javascript中的真值。请改用:

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

答案 1 :(得分:1)

怎么样

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

答案 2 :(得分:0)

Ajax是异步的。你需要使用回调。

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

function callback_setvis(){
     var ischecked = (isVisible) ? true : false;
     $("#visible").attr('checked', ischecked);
}

再次审核您的问题后,上面的内容似乎无效。

这可能是attr vs prop

的问题

如果您使用的是jQuery 1.6或更高版本,则应执行以下操作:

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

答案 3 :(得分:0)

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