javascript - 为什么我的 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>
解决方案
hasAttribute
意思是“有一个同名的属性”
你说class="green"
。它有一个class
属性,而不是一个属性(并且在有效的 HTMLgreen
中不能有一个属性)。green
这并不意味着“具有具有此值的任何名称的属性”。DOM 没有这样做的功能。您需要遍历每个属性(例如通过property attributes
)并依次测试每个属性。
推荐阅读
- javascript - 如何使用 React 操作 SVG 路径 onclick?
- javascript - 使用 jQuery 替换标签内的文本
- javascript - 多个插入 node.js
- database - 在 postgresql 中使用 except 选择
- python - 如何在 Django 中使用上下文处理器创建表单?
- variables - 如何制作反垃圾邮件功能discord.py?
- python - 如何找到这个转折点
- ruby-on-rails - Rails 每当 gem 不使用 Ubuntu 和 Docker Compose 执行重复的 crontab 任务时
- wheelnav.js - 完全隐藏轮子
- javascript - Gulp 4 中未显示引导图标