我确信这个问题肯定有一个非常简单的答案,但冒着听起来很愚蠢的风险 - 我无法让这个开关语句正常工作。输入变量'status'可以是'public'或'draft',我可以向你保证它只保存这两个值中的一个,因为我已经在各个阶段提醒它了,无论如何,这里的if语句有效。看看:Javascript switch语句 - 很简单,我做错了什么?
function switch_status(status){
if (status == 'public'){
return false;
} if (status == 'draft') {
return true;
}
^这个工作,但用下面的'switch'语句替换'if'不起作用。
switch(status){
case 'public':
return false;
case 'draft':
return true;
}
}
第一个给我提供了不可避免的尴尬简单的答案赢得了我的荣誉!
编辑:这是我的全部代码 -
$('.status').live('click',
function(){
fullClass = $(this).attr('class');
id = fullClass.split(' ').slice(-1);
status = fullClass.split(' ').slice(-2,-1);
var newStatus = switch_status(status);
alert(newStatus);
});
function switch_status(status){
// if (status == 'public'){
// return false;
// } if (status == 'draft') {
// return true;
// }
switch(status){
case 'public':
return false;
case 'draft':
return true;
}
}
使用'switch'时报错吗?一些上下文代码也可能有帮助 - 没有任何发布会显示问题。 – 2010-12-15 16:13:12
尝试添加最后一种情况后的默认代码块 - 默认值:返回false – lnrbob 2010-12-15 16:18:17
@ g.d.d.c我刚刚附加了完整代码的问题。警报显示'undefined',但是当用'if'代替'switch'时,我得到正确的返回值...(!??) – Inigo 2010-12-15 16:19:13