【发布时间】:2021-09-29 04:26:25
【问题描述】:
我一直在研究工具提示,为此我创建了一个 JavaScript 函数 Tooltip(),在其中我选择了所有 DOM 元素,例如 const targets = document.querySelectorAll('*'),在选择所有元素后,我在 targets 变量上添加了forEach 函数在每个函数内部,我创建了一个if 语句,在该语句中我检查了一个元素是否包含我在requiredAttrs 数组中提到的特定属性,但它无法以某种方式工作!而且我不知道我在哪里做错了。
完整代码
function Tooltip() {
const requiredAttrs = ['data-tooltip', 'data-tooltip-position', 'data-tooltip-content'];
const targets = document.querySelectorAll('*');
targets.forEach((target, index) => {
if (target.hasAttribute(requiredAttrs[index])) {
console.log('Y');
} else {
console.log('No');
}
});
}
Tooltip();
<!DOCTYPE html>
<html dir="ltr" lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="public/css/main.css" />
<title>Pearl Framework</title>
</head>
<body class="vh-full grid-center">
<style>
body {
background-color: #a1a1a1;
}
.box {
width: 100px;
height: 100px;
background-color: purple;
}
</style>
<div
class="box"
data-tooltip="true"
data-tooltip-position="top-center"
data-tooltip-content="Hello, World!"
></div>
<script src="public/script/tooltip.js"></script>
</body>
</html>
如您所见,<div class="box"></div> 具有所有 3 个属性,因此 if 语句应该运行,但 else 部分正在运行。
【问题讨论】:
标签: javascript arrays loops for-loop foreach