【问题标题】:Foreach loop to check for a valueForeach 循环检查一个值
【发布时间】:2021-12-12 23:44:58
【问题描述】:

我有一个循环遍历数组的 foreach 循环,然后我运行一个回调函数,该函数将数组中每个项目的值作为函数的参数,该函数在数组中的每个项目之前运行一次。在回调函数中,我试图将传递的值与字符串进行比较,但我总是得到一个错误,没有任何东西被记录到控制台

这是我的代码

window.addEventListener('load', function() {
  let occupation = ["urologist", "urologist", "staff", "nurse", "surgeon"]

  occupation.forEach(function(occ) {
    let ab = occ.textContent
    let bc = ab.toLowerCase();
    chkfun(bc)
  })

  function chkfun(val) {
    if (val == "urologist") {
      console.log("urologist")
    }
    if (val == "surgeon") {
      console.log("surgeon")
    }
    if (val == "staff") {
      console.log("staff")
    }
    if (val == "nurse") {
      console.log("nurse")
    }
  }
}, false);

【问题讨论】:

  • .textContent 用于获取 DOM 元素的文本,而不是字符串。

标签: javascript function foreach callback


【解决方案1】:

您的问题在于let ab = occ.textContent 行。 occ 已经包含文本内容。你可以做bc = occ.toLowerCase()

也看看JavaScript Switch,而不是做一堆if

【讨论】:

    【解决方案2】:

    您可以在 forEach 中调用您的函数,它将与每个元素一起调用,在那里您可以将您的值转换为小写并进行比较,也可以使用 else if 这样脚本将不会测试每个值并立即停止得到一场比赛。您还可以在末尾添加else 用于未知元素

    window.addEventListener('load', function() {
      let occupation = ["Urologist", "urologist", "staff", "nurse", "surgeon","a"];
      occupation.forEach(chkfun);
      function chkfun(v) {
        let val = v.toLowerCase();
        if (val == "urologist") {
          console.log("urologist")
        } else if (val == "surgeon") {
          console.log("surgeon")
        } else if (val == "staff") {
          console.log("staff")
        } else if (val == "nurse") {
          console.log("nurse")
        } else {
          console.log("element not found");
        }
      }
    }, false);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-28
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多