javascript - 单行 if 语句

标签 javascript

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

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

最佳答案

可以使用comma operator来做到这一点:

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

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

这是一个live example使用 jQuery (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)。

关于javascript - 单行 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14767199/

相关文章:

javascript - 在javascript中验证仅字母字符串

javascript - 如何使用 React refs、回调模式来更新状态

javascript - redux:使用不可变方法修改数组中对象的属性的性能。优点和缺点

javascript - 必需的复选框组

javascript - 三个js获取mesh.lookAt(object);的坐标

javascript - 在调整大小和窗口滚动时动态更改值

javascript - navigator.geolocation api 的替代方案

javascript - 无法使用 Bootstrap 和 Node 获取 POST 数据

javascript - window.open 在 IE 中不工作

javascript - 如果标题包含右对齐文本,jQuery UI 对话框将隐藏关闭 (X) 按钮。我怎样才能解决这个问题?