Javascript 相等怪异
我正在尝试通过ajax 获取一些数据。其中一项数据确定默认情况下是否应选中复选框。如果返回的变量isVisible
是1
,那么应该检查它,如果它的0
那么应该取消检查。代码如下:
$.getJSON(myUrl, function(result)
{
isVisible = result.isVisible;
// snip...
} );
稍后的代码:
var isChecked = (isVisible) ? true : false;
$("#visible").attr('checked', isChecked);
问题是,无论 isVisible
是否设置为 1 或 0,checked
变量始终被评估为 true。我真的不确定问题是什么。也许 isVisible
被视为字符串?我该如何解决这个问题?
I'm trying to fetch some data through ajax. One of the data determines whether or not a checkbox should be checked by default. If the returned variable isVisible
is 1
, then it should be checked, if its 0
then it should be unchecked. Here's the code:
$.getJSON(myUrl, function(result)
{
isVisible = result.isVisible;
// snip...
} );
Later on in the code:
var isChecked = (isVisible) ? true : false;
$("#visible").attr('checked', isChecked);
The problem is that, whether or not isVisible
is set to 1 or 0, the checked
variable is always being evaluated to true. I'm really not sure what the problem is. Perhaps isVisible
is being treated as a string ?? How do I resolve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
可能
isVisible
是一个字符串。“0”
是 Javascript 中的真值。使用这个代替:Probably
isVisible
is a string."0"
is a truthy value in Javascript. Use this instead:怎么样
?
How about
?
我猜“isVisible”是一个字符串而不是数字,所以它通过了测试。
尝试 parseint(isVisible, 10),让我知道
I guess "isVisible" is a string not a number, so it pass the test.
Try parseint(isVisible, 10), an let me know
Ajax 是异步的。你需要使用回调。
再次查看您的问题后,似乎上述内容可能不起作用。
这可能是
attr
与prop
的问题,您应该这样做:如果您使用 jQuery 1.6 或更高版本,
Ajax is asynchronous. you need to use callbacks.
After reviewing your question again it seems the above might not work.
This might be an issue of
attr
vsprop
if you are in jQuery 1.6 or greater you should do: