use*_*580 1 javascript if-statement
A)我有第一个功能很好用:
if(onlyUs == '1' && idUser == '0'){
obj.after(jQuery('<div />').css({'clear':'both'}).addClass('kklike-msg').text('Only registered users can vote.'));
setTimeout(function(){
jQuery('.kklike-msg').fadeOut('normal');
},3000);
return false;
}
Run Code Online (Sandbox Code Playgroud)
B)所以我想我可以做以下事情:
if(idUser == '0'){
if(action == 'like'){
var ajaxAction = 'add_like';
}else{
var ajaxAction = 'remove_like';
}
}else{
if(action == 'like'){
var ajaxAction = 'add_like';
window.open('http://mywebsite.com/like')
}else{
var ajaxAction = 'remove_like';
window.open('http://mywebsite.com/remove')
}
}
Run Code Online (Sandbox Code Playgroud)
C) 知道原始函数很简单(运行良好):
if(action == 'like'){
var ajaxAction = 'add_like';
}else{
var ajaxAction = 'remove_like';
}
Run Code Online (Sandbox Code Playgroud)
但是 B) 不起作用。在两种情况下(登录与否),新窗口都会打开。你有解决方案吗 ?
如果不知道类型的idUser,它是很难说是什么问题,但最有可能的罪魁祸首是利用==比较替代===。使用 时,JavaScript 会将要比较的变量转换为类似的类型==,这可能会在您的情况下导致一些非常不可预测的结果。
我建议您编写如下代码。如果这仍然不能按您的预期工作,您应该调查实际的值idUser是什么。它可能不是string导致您问题的原因。
if (idUser === '0') {
if(action === 'like') {
var ajaxAction = 'add_like';
} else {
var ajaxAction = 'remove_like';
}
} else {
if (action === 'like') {
var ajaxAction = 'add_like';
window.open('http://mywebsite.com/like');
} else {
var ajaxAction = 'remove_like';
window.open('http://mywebsite.com/remove');
}
}
Run Code Online (Sandbox Code Playgroud)
有关为什么应该使用 的一个非常简单的示例===,请参阅此博客文章:
http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html