首页 > 解决方案 > 为什么我的 if 语句忽略了布尔“真”值条件?

问题描述

我写的代码行是基于这样的原则,因为对象或数组的存在可以被认为是真实的,它通常用于检查页面中元素的存在。但我猜我的情况不属于这一类。但是,当我将 (el.className === "green") 作为条件时,代码可以工作。

var el = document.querySelector("ul");
if(el.hasAttribute('green')){
  console.log("yes")
} else {
  console.log("no")
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Practise App</title>
    <link rel="stylesheet" href="index.css">
  </head>
  <body>
  <ul class="green">
    <li>Monday</li>
    <li>Tuesday</li>
  </ul>
    <script src="index.js" type="text/javascript"></script>
  </body>
</html>

标签: javascripthtml

解决方案


hasAttribute意思是“有一个同名的属性”

你说class="green"。它有一个class属性,而不是一个属性(并且在有效的 HTMLgreen中不能有一个属性)。green

这并不意味着“具有具有此值的任何名称的属性”。DOM 没有这样做的功能。您需要遍历每个属性(例如通过property attributes并依次测试每个属性。


推荐阅读