如何在一个函数内组合多个显示分配

How to Combine Multiple Display Assignments Inside One Function

这里是没有经验的开发者。现在我的函数 showTeal() 更改了两个变量的显示属性,并确保其余变量保持设置为 display = "none"; 以确保在函数运行时仅显示某些变量。它有效,但我知道必须有更短的方法来做到这一点。对钢笔其他方面的任何建议也非常感谢。

这是笔:https://codepen.io/aubreywarpool/pen/LwxNyG

    function showTeal(){
      tealtray.style.display = "inline";
      tealroller.style.display = "inline";
      bg.style.animation = "tealbg 4s";
      pinkroller.style.display = "none";
      skyroller.style.display = "none";
      blueroller.style.display = "none";
      pinktray.style.display = "none";
      skytray.style.display = "none";
      bluetray.style.display = "none";
    }

更好的解决方案是按 class 对事物进行分组,以便将它们作为一个组访问。如果您将 'tray' 和 'roller' class 分别添加到您的 IMG 标签,您可以通过查询 select 或

访问它们
let rollers=document.querySelectorAll(".roller");
let trays=document.querySelectorAll(".tray");

然后你可以修改整个组:

function showTeal(){
    rollers.forEach( roller => roller.style.display = "none");
    trays.forEach( tray => tray.style.display = "none");
    tealtray.style.display = "inline";
    tealroller.style.display = "inline";
    bg.style.animation = "tealbg 4s";
}

或者,您可以使用 JS 库,例如 jQuery 来使这些类型的 select 或 属性 操作更容易。例如,使用 jQuery 您不需要提前创建组,您可以一次 select 多个查询:

function showTeal() {
    $(".rollers, .trays").hide();
    $("#tealtray, #tealroller").show();
    bg.style.animation = "tealbg 4s";
}