javascript - Javascript:选择 HTML 页面上的所有 data-qa 属性
问题描述
仅使用 JavaScript,不使用 JQuery 等,选择具有特定数据属性的所有属性名称的最有效方法是什么(比如说 data-qa)。
<p data-foo="0"></p><br/><h6 data-qa="apple"></h6>
<p data-foo="0"></p><br/><h6 data-qa="book"></h6>
<p data-foo="0"></p><br/><h6 data-qa="car"></h6>
预期结果应该是列表:
apple
book
car
这个问题得到了父元素,我想要属性本身。在不使用 jQuery 的情况下选择具有“data-”属性的所有元素
资源:
解决方案
下面的代码通过使用 获取所有元素document.querySelectorAll
,将元素映射到数据属性的值,然后过滤掉虚假或'0'
.
let getAllDataAttrs = name => Array.from(
document.querySelectorAll(`[data-${name}]`)
).map(elem => elem.getAttribute(`data-${name}`))
.filter(val => val && val !== '0');
console.log(getAllDataAttrs('foo'));
<p data-foo="0"></p><br/>
<h6 data-foo="apple"></h6>
<p data-foo="0"></p><br/>
<h6 data-foo="book"></h6>
<p data-foo="0"></p><br/>
<h6 data-foo="car"></h6>
推荐阅读
- javascript - 错误 - 无法读取 null 的属性“toLowerCase”
- python - 如何使用套接字在 Python 中处理多人游戏中的数据
- r - 在 for 循环中出现 tryCatch 错误“找不到对象”
- angular - 如何使用 Angular 8+ 从控制器检查 Ionic 框架中的选择框选项?
- excel - 根据特定范围内的活动单元格显示行号和列号
- azure - Azure Function App 代理正在删除查询字符串
- android - E/BitmapFactory:无法解码流:java.io.FileNotFoundException:null:打开失败:ENOENT(没有这样的文件或目录)
- java - 从原始 myString 中删除输入字符串
- javascript - Axios Post 请求未使用 cancelToken 触发
- java - 错误答案:字符串中的排列:修复错误(Leetcode)