为了账号安全,请及时绑定邮箱和手机立即绑定

文档 querySelectorAll 查找元素属性名称的一部分?

文档 querySelectorAll 查找元素属性名称的一部分?

holdtom 2021-12-23 10:50:22
我尝试选择页面上具有ARIA属性的所有元素,以检查页面是否错误使用了它们。众所周知,该属性以 aria-[NAME] 开头。由于我不能将正则表达式与元素选择器一起使用,并且css 选择器没有给我通配符选择属性名称的选项(或者是吗?),我想知道我该怎么做?简单的测试页面:<div id="percent-loaded" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" ></div><div class="text">  <label id="tp1-label" for="first">First Name:</label>  <input type="text" id="first" name="first" size="20" aria-labelledby="tp1-label" aria-describedby="tp1" aria-required="false" />  <div id="tp1" class="tooltip" role="tooltip" aria-hidden="true">Your first name is optional</div></div><script>let elAria1 = document.querySelectorAll('[aria-*]'); // this doesn't worklet elAria2 = document.querySelectorAll('[aria-'*]); // this doesn't work eitherlet elAria3 = document.querySelectorAll([aria-*]); // this doesn't work too</script>
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

是的,除非您已经有了需要查找的属性名称列表,否则无法使用查询字符串来过滤您想要的属性名称。您必须以编程方式执行此操作,方法是检查元素的任何属性是否以 开头aria:


const ariaElements = [...document.querySelectorAll('*')]

  .filter(elm => [...elm.attributes].some(

    ({ name }) => name.startsWith('aria-')

  ));

console.log(ariaElements);

<div id="percent-loaded" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" ></div>

<div class="text">

  <label id="tp1-label" for="first">First Name:</label>

  <input type="text" id="first" name="first" size="20" aria-labelledby="tp1-label" aria-describedby="tp1" aria-required="false" />

  <div id="tp1" class="tooltip" role="tooltip" aria-hidden="true">Your first name is optional</div>

</div>


查看完整回答
反对 回复 2021-12-23
  • 1 回答
  • 0 关注
  • 291 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信