单行if语句

时间:2013-02-08 06:49:39

标签: javascript

请帮帮我。我使用单行javascript if语句,但我希望它在检查条件后执行两个操作,但我不知道如何放置第二个语句。我认为分号会起作用,但事实并非如此。它说分号是错误的。 这是我的代码,用分号......

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

2 个答案:

答案 0 :(得分:7)

可以使用comma operator

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

...但它不会说它可以实现可读代码。我使用普通的if

这是使用jQuery(live example)的source。 (我使用了showhide,见下文)。但严重的是,将可维护性/可读性与可比性进行比较:

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

我知道哪一个我宁愿做维护。或者,如果你想要一个单行,请稍微更改一下CSS,这样你就可以有一个button类和一个添加clicked类,并且这样做(我是假设jQuery在这里):

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

Live Example | Source


旁注:您使用的选择器看起来与jQuery一样,但jQuery实例没有style属性。如果您使用的是Prototype或MooTools,则可能需要删除#前面的alert。如果您使用的是jQuery,请使用其showhide方法(可能还有addClass / removeClass)。

答案 1 :(得分:0)

尝试使用dwo if if this:

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