2013-10-08 5 views
0

Je ne parviens pas à obtenir l'instruction IF ci-dessous pour fonctionner correctement. Les deux premières déclarations s'exécutent parfaitement. Cependant, la dernière instruction (celle avec! = Statement) n'est pas lue du tout. Je ne sais pas où je vais mal.ELSE/IF La déclaration ne fonctionne pas correctement

function validatePrivate(v){ 
    if (cbSwitchStatus.getValue()!='P') { 
     if (v=='') return true; 
     else return 'This valid is not valid.'; 
    } 
    else { 
     if (storePrivate.findExact('disp',v) > -1) return true; 
     else return 'This value is not valid.'; 
    } 
    else{ 
     if(cbServCarrier.getValue() != cbPrivateCarrier.getValue()) return true; 
     else return 'This value is not valid.'; 
    } 

} 
+1

Pouvez-vous imaginer une cas pour le second 'else' qui n'avait pas déjà été traité avec le premier' else'? Il n'y a pas de 'sinon' – devnull69

+0

Pourquoi n'essayez-vous pas d'utiliser {} partout. Je pense que cela résoudrait le problème. – Bazinga777

+1

Prenez un livre sur la programmation. Commencez dès la base .. –

Répondre

2

Plus simplement, vous ne pouvez pas avoir plusieurs d'autre parce que le dernier reste sera tout simplement jamais évalué ...

function validatePrivate(v){ 
    if (cbSwitchStatus.getValue()!='P') { 
     if (v=='') return true; 
     return 'This valid is not valid.'; 
    } 
    else if (storePrivate.findExact('disp',v) > -1) { 
     return 'This value is not valid.'; 
    } 
    else if(cbServCarrier.getValue() != cbPrivateCarrier.getValue()) { 
     return 'This value is not valid.'; 
    } 

} 
0

Le bloc else finale en question n'a pas de chemin d'exécution qui l'atteindre .

Vous devez clarifier quelle situation est encapsulée par cette condition finale 'else', puis retravailler vos accolades fermantes en conséquence pour vous assurer qu'elles reflètent votre intention.

0

Vous ne pouvez pas avoir plusieurs autres blocs (car soit le premier cas ou premier bloc autre sera toujours exécuter), les combiner en un ou les imbriquer comme celui-ci:

function validatePrivate(v){ 
    if (cbSwitchStatus.getValue()!='P') { 
     if (v=='') return true; 
     else return 'This valid is not valid.'; 
    } 
    else if (storePrivate.findExact('disp',v) > -1){ 
     return true; 
    } 
    else if(cbServCarrier.getValue() != cbPrivateCarrier.getValue()) { 
     return true; 
    } 
    else { 
     return 'This value is not valid.' 
    }; 
} 
+0

Super merci! –

1
if (
    cbSwitchStatus.getValue()!='P' && v=='' || 
    storePrivate.findExact('disp',v) > -1 || 
    cbServCarrier.getValue() != cbPrivateCarrier.getValue() 
) { 
    return true; 
} else { 
    return 'This valid is not valid.'; 
} 
Questions connexes