2013-02-08 1 views
0

s'il vous plaît aidez-moi. J'utilise une seule ligne javascript if déclaration, mais je veux qu'il exécute deux actions après avoir vérifié la condition, mais je ne sais pas comment mettre la deuxième déclaration. Je pensais qu'un point-virgule fonctionnerait, mais ce n'est pas le cas. il dit que le point-virgule est une erreur. voici mon code, les points-virgules ...ligne unique si déclaration

this.className === "unclickedButton" ? this.className = "clickedButton"; 
$("#alert").style.display="block" : this.className = "unclickedButton"; 
$("#alert").style.display="none" 
+5

Pourquoi ne pouvez-vous utiliser simplement une instruction régulière 'if'? –

Répondre

7

Vous peut ce faire, en utilisant le comma operator:

this.className === "unclickedButton" ? 
(this.className = ($("#alert").style.display="block", "clickedButton")) : 
(this.className = ($("#alert").style.display="none", "unclickedButton")); 

... mais ce ne serait pas le dire fait pour lisible code. J'utiliserais un if normal. Voici un live example utilisant jQuery (source). (J'ai utilisé show et hide, voir ci-dessous). Mais sérieusement, comparez cela pour la maintenabilité/lisibilité à:

if (this.className === "unclickedButton") { 
    this.className = "clickedButton"; 
    $("#alert").style.display = "block"; 
} 
else { 
    this.className = "unclickedButton"; 
    $("#alert").style.display = "none"; 
} 

Je sais lequel je préfère faire la maintenance. Ou si vous voulez un one-liner, changer le CSS légèrement de sorte que vous avez une classe button et une classe clicked vous ajouter à, et faire cela (je suppose jQuery ici):

$("#alert").toggle($(this).toggleClass('clicked').hasClass('clicked')); 

Live Example | Source


Side note: Les sélecteurs que vous utilisez ressembler à ce que vous souhaitez utiliser avec jQuery, mais les instances ne jQuery pas une propriété style. Si vous utilisez Prototype ou MooTools, vous voulez probablement supprimer le # devant alert. Si vous utilisez jQuery, utilisez ses méthodes show et hide (et probablement addClass/removeClass).

+0

Cela fonctionne à cause de l'assignation sur chaque ligne, mais malheureusement '$ (" # alert "). Style.display =' est inefficace, bien que vous puissiez utiliser le hideux '$ (" # alert ") [0] .style. display = 'pour accompagner le reste de la hideur. –

+0

@ExplosionPills: LOL, je signalais juste dans la réponse que ces lignes semblent étranges, pas tout à fait une correspondance pour jQuery ni Prototype ou MooTools. * Pourrait * être une autre bibliothèque, mais il semble douteux ... –

+0

@ T.J.Crowder chaque fois que non déclaré, je suppose que jQuery. –

0

Essayez-le par dwo instruction if comme ceci:

if(statement 1){ 
     ... 
     if(statement 2){ 
     ... 
     } 
    } 
+0

Je crains que le demandeur n'aime pas cette solution –

+0

Quelles seraient ces deux déclarations, par le façon? Je ne peux penser qu'à un. –

Questions connexes