我有以下功能:
function updateChatRoom() {
$.post('php/api.php', {"function":"getActiveChat"}, function(jsData) {
var chatID = jsData.id;
if (chatID == 0) {
alert('no active chat!');
}
else {
$.post('php/api.php', {"function":"updateChatRoom", "chatID":chatID}, function(jsData) {
$('#chatRoom').empty();
length = jsData.length;
for (i=0; i<length; i++) {
$('#chatRoom').append('\
<div class="fe-message-wrap">\
<div class="fe-message-name">'+ jsData[i].name + ':</div>\
<div class="fe-message-text">'+ jsData[i].message +'</div>\
</div>\
').fadeIn('250');
}
$('#chatRoom').scrollTop($('#chatRoom')[0].scrollHeight).animate('500');
$('#chatMessage').focus();
});
}
});
}
执行此函数时,应首先检查是否存在事件聊天。这是通过 API 调用“getActiveChat”进行测试的。 如果没有事件的聊天室,则返回 0。 我的问题是,即使返回 0 ind chatID,它也会忽略整个 if-else 语句并直接跳转到下一个 $.post() 函数...????怎么样? 我不明白,这是怎么回事?
有什么提示吗?
最佳答案
检查chatID
是否是一个字符串。在 JavaScript 中 0 == false
但 "0"== true
。
既然您提到了 chatID
的值未定义,那么您已经找到了原因。因为在 javascript 中,undefined != 0
。
检查jsData
是什么。如果它是一个字符串,那么您需要执行 JSON.parse()
将其转换为对象。
关于javascript - Function "overruns"执行期间的if-else语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20389315/