javascript - 有没有比没有 else 子句的 if 语句更优雅的解决方案?

标签 javascript if-statement

在下面的代码中,如果 Control(触发 Toggle 的第一个 OL 的元素)不是 Visible 它应该被设置为 Visible 并且所有其他 Controls (Controls[i]) 应该被设置为 Hidden

.js

function Toggle(Control){
    var Controls=document.getElementsByTagName("ol",document.getElementById("Quote_App"));
    var Control=Control.getElementsByTagName("ol")[0];
    if(Control.style.visibility!="visible"){
        for(var i=0;i<Controls.length;i++){
            if(Controls[i]!=Control){

                Reveal("hide",20,0.3,Controls[i]);

            }else{

                Reveal("show",20,0.3,Control);

            };
        };
    }else{

        Reveal("hide",20,0.3,Control);

    };
};

虽然函数 [Toggle] 工作正常,但它实际上是将 Controls[i] 设置为 Hidden,即使它已经是。

这很容易通过在下面的代码中添加一个 If 语句来纠正,肯定有一个更优雅的解决方案,也许是一个复杂的 If 条件?

.js

function Toggle(Control){
    var Controls=document.getElementsByTagName("ol",document.getElementById("Quote_App"));
    var Control=Control.getElementsByTagName("ol")[0];
    if(Control.style.visibility!="visible"){
        for(var i=0;i<Controls.length;i++){
            if(Controls[i]!=Control){

if(Controls[i].style.visibility=="visible"){

                Reveal("hide",20,0.3,Controls[i]);

};

            }else{

                Reveal("show",20,0.3,Control);

            };
        };
    }else{

        Reveal("hide",20,0.3,Control);

    };
};

我们始终感谢您的帮助。

最佳答案

在丑陋的纯 javascript 代码世界中,您的解决方案很好。但仅仅因为你说“优雅”,我的回答是使用 jQuery。

我会使用基于行为的代码而不是基于事件的代码来编写更接近实际情况的代码,因此这不会完全匹配您的代码..但是,它看起来像:

$('#Quote_app ol').click(function() { 
  if ($(this).is(':visible')) {
    $(this).fadeOut();
  } else {
    $(this).fadeIn();
    $('ol', $(this).parent()).not(this).fadeOut();
  }
});

将点击事件附加到 ID=Quote_app 下的每个 ol 元素,如果它当前可见,则隐藏它,否则显示它,并隐藏所有其他 ol 元素。

关于javascript - 有没有比没有 else 子句的 if 语句更优雅的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2603445/

相关文章:

javascript - 为什么我无法在 Node REPL 中打开严格检查?

javascript - 从父级上的 iframe 打开的弹出窗口在新选项卡上(在父级上)打开 URL

javascript - jQuery.post() 发送电子邮件,但在没有服务器刷新的情况下无法到达 .done()/.fail()/.always()

java - 避免嵌套 If Else/Switch - Java

javascript - 如何通过比较其他三个选择选项值来禁用一个选择选项的值?

javascript - jQuery 精确数字匹配表排序

javascript - 对 Node 顺序规则感到困惑(同步/异步)

javascript - 为函数内的 else 语句创建循环

如果正在删除的行中的项目满足条件,MySQL 将从表中删除

Java - 检查变量是否等于任何数组元素