首页 > 解决方案 > 任何纠正这个/解释它的帮助将不胜感激

问题描述

尝试使用 JavaScript 为按钮编写函数。我希望该函数同时隐藏一些 ID 元素并显示其他 ID 元素。这就是我到目前为止所拥有的。它不起作用。我对 JavaScript 很陌生,所以我的代码很可能是垃圾。任何帮助表示赞赏。

function mlbShowTeamsMap() {
  document.getElementById("mlbTeamsMap").style.display = "block";
  document.getElementById("mlbTeamsList").style.display = "block";
  var mlbOther = ["nflTeamsList", "nflTeamsMap", "nhlTeamsList", "nhlTeamsMap", "nbaTeamsList", "nbaTeamsMap"];
  mlbOther.forEach(hide);

  function hide() {
    style.display = "none";
  }
}

标签: javascriptarraysfunction

解决方案


您正在使用forEach迭代您的数组mlbOther。现在forEach接受一个数组并有一个回调函数,它将第一个参数作为数组的元素。因此,您的回调函数hide需要定义一个变量来接受此参数。请在下面找到代码。

更正的语法

function mlbShowTeamsMap() {
  document.getElementById("mlbTeamsMap").style.display = "block";
  document.getElementById("mlbTeamsList").style.display = "block";

  var mlbOther = ["nflTeamsList", "nflTeamsMap", "nhlTeamsList", "nhlTeamsMap", "nbaTeamsList", "nbaTeamsMap"];

  mlbOther.forEach(hide);

  function hide(id) {
    document.getElementById(id).style.display = "none";
  }

}

使用箭头函数的替代语法

function mlbShowTeamsMap() {
  document.getElementById("mlbTeamsMap").style.display = "block";
  document.getElementById("mlbTeamsList").style.display = "block";

  var mlbOther = ["nflTeamsList", "nflTeamsMap", "nhlTeamsList", "nhlTeamsMap", "nbaTeamsList", "nbaTeamsMap"];

  mlbOther.forEach(id => {
    document.getElementById(id).style.display = "none";
  });
}

阅读更多

为每个

箭头函数


推荐阅读