Comment écrire une instruction if else sans 'else' en Javascript

Je ne peux pas utiliser else dans mon script; Comment puis-je implémenter une déclaration if else sans utiliser else ?

j'essaie de redimensionner un div:

function hideTable(){
    var table = document.getElementById('PDemo');
    if(table.style.width == "50%") table.style.width = "150px";
    if(table.style.width == "150px") table.style.width = "50%";
}

ce script ne fonctionne pas car dès que la première instruction if est exécutée, la condition pour la seconde instruction if devient vraie, de sorte que l'exécution aussi, donc rien ne change.

P. S .. Ce n'est pas un devoir. Logiciel J'utilise seulement permet des déclarations d'une ligne.

6
demandé sur Ajay2707 2011-03-22 16:46:19

6 réponses

si vous ne pouvez pas utiliser un else (et qui est fou ), utilisez un switch .

switch (table.style.width) {

    case '50%':
       ...
       break;

    case '150px':
       ...
       break;

}
8
répondu alex 2011-03-22 13:48:35

L'opérateur ternaire:

condition ? execTrue() : execFalse();

cela équivaut à:

if (condition) {
    execTrue();
}
else {
    execFalse();
}

vous can écrivez un if/else en 1 ligne, ne appuyez simplement pas sur enter...

if (condition) { execTrue(); } else { execFalse(); }

en outre, vous pouvez écrire n'importe quelle déclaration de complexité arbitraire sur une ligne:

if(condition1) { exec1(); } else if(condition2) { exec2(); } else { execFalse() }

EDIT: je dois poser la question: wtf genre d'horrible logiciel ne vous permet d'écrire énoncés d'une ligne? Est-ce une forme de torture? Cela semble tout à fait misérable

EDIT 2: Si vous rencontrez le problème où la seconde si l'exécution d'une instruction ainsi, vous voulez imposer l'exclusion mutuelle, c'est à dire, à l'aide de else if au lieu de if sur chaque conditionnelle

- tjw

21
répondu Travis Webb 2011-03-22 13:58:18

sauvegardez la valeur dans une variable différente.

function hideTable(){
  var table = document.getElementById('PDemo');
  var width = table.style.width;
  if(width == "50%") table.style.width = "150px";
  if(width == "150px") table.style.width = "50%";
}
10
répondu Marcel Jackwerth 2011-03-22 13:49:29
if(/*condition a*/){/*statements a*/}else if(/*condition b*/){/*statements b*/}else{/*statements c/*}

une seule ligne.

7
répondu Sean Patrick Floyd 2011-03-22 14:09:03

avec une boucle while pour le bien de l'unicité.

while (!resized){
  if(width == "50%") {table.style.width = "150px";resized=true;break};
  if(width == "150px") table.style.width = "50%";resized=true;break};
  resized=true;
}

Quel est le logiciel que vous utilisez?

0
répondu Joseph Le Brech 2011-03-22 14:03:08

avec & & opérateur sont appelés opérateur de court-circuit. Il retournera la valeur du second opérande basée sur la valeur du premier opérande.

par exemple: (explication: si 'profile' permission existe dans permArray alors charger le profil de l'utilisateur)

isPermitted(permArray,'profile') && loadProfile();

l'opérateur && est également utile pour vérifier les objets nuls avant d'accéder à leurs attributs. Exemple...

var name = person && person.getName();
0
répondu Musa 2016-06-05 15:00:40