Je suis sûr qu'il doit y avoir une réponse très simple à cela, mais au risque de paraître stupide - je ne peux pas obtenir cette déclaration de commutateur pour fonctionner. L'entrée var, 'status' peut être soit 'publique' soit 'brouillon', et je peux vous assurer qu'elle ne contient qu'une de ces deux valeurs car je l'ai alertée à différentes étapes, et de toute façon, la déclaration if fonctionne ici . Jetez un coup d'oeil:Javascript switch déclaration-très simple, qu'est-ce que je fais mal?
function switch_status(status){
if (status == 'public'){
return false;
} if (status == 'draft') {
return true;
}
^Cela fonctionne, mais en remplaçant le 'si' avec cette déclaration de 'commutateur' ci-dessous ne fonctionne pas.
switch(status){
case 'public':
return false;
case 'draft':
return true;
}
}
Le premier à me fournir l'inévitable réponse embarrassante simple gagne mon accolade!
EDIT: Voici mon plein code-
$('.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;
}
}
Y at-il une erreur signalée lors de l'utilisation de 'switch'? Un code de contexte peut aussi aider - rien affiché ne démontre un problème. –
Essayez d'ajouter un bloc de code par défaut après le cas final - par défaut: return false – lnrbob
@ g.d.d.c Je viens d'ajouter la question avec le code complet. L'alerte dit 'indéfini', mais en remplaçant le 'switch' par le 'if', j'obtiens les bonnes valeurs retournées ... (! ??) – Inigo