花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 52|回复: 14

querySelectorAll应用举例

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2023-2-12 13:26 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    querySelectorAll是JS基于DOM查询的函数,查询HTML文档的所有指定元素。语法为:

        element.querySelectorAll(selectors);

    其中:① element 是查询的发起元素,比如 document(文档)、某一个div(元素);② 参数 selectors 指要查询的选择器关键字,它用了复数形式,与 All 相对应。例如,我们要查询HTML文档的所有 <span></span>  标签,并将结果存储在变量 spanAr 中:

        let spanAr = document.querySelectorAll('span');

    这将得到一个包含了所有 span 标签的 NodeList 数组对象,通过该对象我们可以对任意一个DOM节点上 span 标签进行操作。

    如果我们只想查询 id="mybox" 的 div 下的所有 span 标签,我们可以这么做:

    方法一:let spanAr = mybox.querySelectorAll('span');
    方法二:let spanAr = document.querySelectorAll('#mybox span');

    显然,方法一更简洁,不过方法二也有灵活的一面,比方说,我们只想查询 mybox 下的第一子层 p 标签:

        let spanAr = document.querySelectorAll('#mybox > p');

    或者,所有第一子层的 class="redcolor" 的 p 标签:

        let spanAr = document.querySelectorAll('#mydiv>p.redcolor');

    从方法二可以发现,参数 selectors 是很灵活使用的,它使用的可以是 元素选择器(如div、p、span等)、 id选择器、class选择器,还可以做范围限制,非常实用。

    再参考如下示例:

        let ar1 = document.querySelectorAll('div'); //查询所有 div 元素
        let ar2 = document.querySelectorAll('#mybox, myDiv'); //查询 id="mybox" 和 id="myDiv" 的所有元素
        let ar3 = document.querySelectorAll('.mypic'); //查询 class="mypic" 的所有元素
        let ar4 = document.querySelectorAll('p[data-text]'); //查询所有含有 data-text="..." 的 p 标签,如 <p data-text="ok">...</p>

    上面的示例不可能囊括全部的查询范围或方法,能从中得到启发就好。

    最后给一个完整的 querySelectorAll 应用实例:一个 div 元素里有若干的有序列表和无序列表以及几个p段落,我们通过 querySelectorAll 对之进行查询后记录下他们的情景设置,然后单击这些列表和段落改变它们的文本颜色为红色,再单击还原原来的颜色。代码:

    1. <div id="mbox">
    2.         <ul>
    3.                 <li>无序列表 item1</li>
    4.                 <li>无序列表 item2</li>
    5.                 <li>无序列表 item3</li>
    6.                 <li>无序列表 item4</li>
    7.         </ul>
    8.         <ol>
    9.                 <li>有序列表 item1</li>
    10.                 <li>有序列表 item2</li>
    11.                 <li>有序列表 item3</li>
    12.                 <li>有序列表 item4</li>
    13.         </ol>
    14.         <p>段落一</p>
    15.         <p>段落二</p>
    16.         <p>段落三</p>
    17.         <p>段落四</p>
    18. </div>

    19. <script>
    20. let colorAr = [];
    21. let liAr = mbox.querySelectorAll('li, p');
    22. [...liAr].forEach( (item,key) => {
    23.         colorAr[key] = item.style.color || 'black';
    24.         item.onclick = () => {
    25.                 let color = item.style.color;
    26.                 item.style.color = color !== 'red' ? 'red' : colorAr[key];
    27.         };
    28. });
    29. </script>
    复制代码


    评分

    参与人数 1威望 +50 金钱 +100 经验 +50 收起 理由
    红影 + 50 + 100 + 50 赞一个!

    查看全部评分

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-2-12 13:27 | 显示全部楼层
    • 无序列表 item1
    • 无序列表 item2
    • 无序列表 item3
    • 无序列表 item4
    1. 有序列表 item1
    2. 有序列表 item2
    3. 有序列表 item3
    4. 有序列表 item4

    段落一

    段落二

    段落三

    段落四

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-2-12 13:28 | 显示全部楼层
    单击二楼任意一个列表或段落,文本会变成红色,再单击还原原来的颜色
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2025-5-5 04:26
  • 签到天数: 597 天

    [LV.9]以坛为家II

    185

    主题

    5874

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥飞龙在天王者至尊大将风范音画大师天籁妙音花潮贵宾

    发表于 2023-2-12 18:46 | 显示全部楼层
    jquery的selector和这类似,不知它俩是谁借鉴的谁。
    我就来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2023-2-12 19:04 | 显示全部楼层
    跟看天书似的
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-2-12 21:49 | 显示全部楼层

    不会吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-2-12 21:52 | 显示全部楼层
    起个网名好难 发表于 2023-2-12 18:46
    jquery的selector和这类似,不知它俩是谁借鉴的谁。

    jQuery是封装的,很方便,但jQuery是基于JS封装的,所以,你的疑问,不言而喻
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2025-5-5 04:26
  • 签到天数: 597 天

    [LV.9]以坛为家II

    185

    主题

    5874

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥飞龙在天王者至尊大将风范音画大师天籁妙音花潮贵宾

    发表于 2023-2-12 22:29 | 显示全部楼层
    马黑黑 发表于 2023-2-12 21:52
    jQuery是封装的,很方便,但jQuery是基于JS封装的,所以,你的疑问,不言而喻

    嗯, 随便找了个jquery.js看里面确实是用的querySelectorAll, 没有querySelector
    我就来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-2-12 23:02 | 显示全部楼层
    起个网名好难 发表于 2023-2-12 22:29
    嗯, 随便找了个jquery.js看里面确实是用的querySelectorAll, 没有querySelector

    它的开发版还是可以看看的,虽然现在大家都觉得它落伍了。我个人感觉,jQuery的编程思想,后续的各种框架,都是手从中受益。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2025-5-5 04:26
  • 签到天数: 597 天

    [LV.9]以坛为家II

    185

    主题

    5874

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥飞龙在天王者至尊大将风范音画大师天籁妙音花潮贵宾

    发表于 2023-2-12 23:17 | 显示全部楼层
    马黑黑 发表于 2023-2-12 23:02
    它的开发版还是可以看看的,虽然现在大家都觉得它落伍了。我个人感觉,jQuery的编程思想,后续的各种框架 ...

    习惯了jquery纯的js就不习惯了, 反之亦然。
    我就来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-2-12 23:19 | 显示全部楼层
    起个网名好难 发表于 2023-2-12 23:17
    习惯了jquery纯的js就不习惯了, 反之亦然。

    凡事一分为二吧。jq带来的好处多多,但是如果没有一定的JS基础,jq也用不好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2025-5-5 04:26
  • 签到天数: 597 天

    [LV.9]以坛为家II

    185

    主题

    5874

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥飞龙在天王者至尊大将风范音画大师天籁妙音花潮贵宾

    发表于 2023-2-12 23:47 | 显示全部楼层
    马黑黑 发表于 2023-2-12 23:19
    凡事一分为二吧。jq带来的好处多多,但是如果没有一定的JS基础,jq也用不好

    都是易学难精
    我就来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-2-13 12:42 | 显示全部楼层

    差不多这个原理
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2023-2-13 14:26 | 显示全部楼层

    这个感觉太难懂了
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-2-13 17:51 | 显示全部楼层
    红影 发表于 2023-2-13 14:26
    这个感觉太难懂了

    是有些抽象,但是一旦弄懂,终身受用
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-14 18:40 , Processed in 0.082598 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表