如何在 ul 中记录特定文本?

How to log specific text in an ul?

提问人:Joe.sexton 提问时间:11/7/2023 最后编辑:Heretic MonkeyJoe.sexton 更新时间:11/7/2023 访问量:39

问:

我无法弄清楚如何控制台记录 li 内部的 innerText,而不是嵌套在 li 内部的 p。

[HTML全文]

<ul id="list">
    
      <li>Tank
        <p>this is tank</p>
      </li>
    
    
      <li>Warrior
        <p>this is warrior</p>
      </li>
    
    
      <li>Ninja
        <p>this is ninja</p>
      </li>
    
  </ul>

JavaScript的

const listChoice = document.querySelectorAll('li')

listChoice.forEach(cls => {
  cls.addEventListener('click', (e) => {
    const choice = e.target.innerText

    console.log(choice)

    if (choice === 'Tank') {
      console.log('You chose tank')
    }
  })
})

我无法让我的选择变量等于目标 innerText,以便控制台.log('你选择了坦克')显示在控制台中。

我试过使用firstChild,它记录“坦克”

javascript dom 事件侦听器

评论

0赞 Heretic Monkey 11/7/2023
什么被记录为?可能是“坦克,这是一辆坦克”。这不等于“坦克”。choice
1赞 Heretic Monkey 11/7/2023
这回答了你的问题吗?如何在 JavaScript 中获取没有子元素的文本?
0赞 Joe.sexton 11/7/2023
是的,选择被记录为 Tank,这是 tank。cls.textContent 也这样做。

答:

0赞 Nicholas McCarty 11/7/2023 #1

您正在尝试在单击 li 元素时记录它们的 innerText。但是,由于 li 元素也包含 p 元素,因此您需要确保获得正确的文本。为此,请使用 li 元素的 textContent 属性,该属性检索 li 元素中的文本内容,然后使用 trim() 删除任何前导或尾随空格。

通过此修改,您应该能够捕获 li 元素中的文本,并使条件语句按预期工作。在此代码中,当您单击 li 元素时,它会记录该 li 元素的文本内容,并检查它是否等于“Tank”以记录相应的消息。

以下是您应该编辑的内容: const 选择 = cls.textContent.trim();

0赞 Joe.sexton 11/7/2023 #2

我找到了一种方法来让它工作,方法是检查 typeof 选项,然后使用 .includes 方法查看字符串中是否包含“Tank”。

 if (choice.includes('Tank')) {
  console.log('You chose tank')
}

评论

0赞 Community 11/8/2023
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。