DOM选择器分为:id、class、name、tagname、高级、关系选择器;(返回的都是标签)

一:元素节点选择器:

1. id: 返回的是单个对象

  1. <body>
  2. <div class="box" a="10" b="20" id="cont" name="wode"></div>
  3. </body>
  1. var ocont=document.getElementById("cont"); //找到的是有id名为"cont"的div标签;
  2. console.log(ocont); //<div class="box" a="10" b="20" id="cont" name="wode"></div>
  3. console.log(typeof ocont); //object;

2. class:返回的是数组对象,可以通过索引解析,专门用在input表单中;

  1. var obox=document.getElementsByClassName("box");
  2. console.log(obox); //HTMLCollection [div#cont.box, cont: div#cont.box, wode: div#cont.box]; 返回的是数组对象
  3. console.log(obox[0]); //<div class="box" a="10" b="20" id="cont" name="wode"></div>
  4. console.log(obox[1]); //undefined;这里的数组是一个个class名为box的标签,索引得到的也是标签,里面的属性名和属性值可以通过attributes等获取。

3. name: 返回的是数组对象,可以通过索引解析

  1. var owode=document.getElementsByName("wode");
  2. console.log(owode); //NodeList [div#cont.box];
  3. console.log(obox[0]); //<div class="box" a="10" b="20" id="cont" name="wode"></div>
  4. console.log(owode[1]) //undefined;规则和class选择器相同,见上!

4. tagname:返回的是数组对象,可以通过索引解析

  1. var oa=document.getElementsByTagName("div");
  2. console.log(oa); //HTMLCollection [div#cont.box, cont: div#cont.box, wode: div#cont.box]; 规则和索引取得的值与上面两个选择器相同!

===================================================================================================================================

5.高级选择器,ES5新增

  1. <body>
  2. <div class="box" a="10" b="20" id="cont" name="wode"></div>
  3. <div class="box" c="999"></div>
  4. </body>

query.Selector():返回的是单个对象;()里写的是css选择器,如:.box、#cont等

  1. var ele=document.querySelector("#cont");
  2. console.log(ele); //<div class="box" a="10" b="20" id="cont" name="wode"></div>

  当有多个同级元素时,返回最近的一个,即最上面那个;

  1. var aaa=document.querySelector(".box");
  2. console.log(aaa); //<div class="box" a="10" b="20" id="cont" name="wode"></div>;
  3. //第二个div并没有被显示时

  querySelectorAll():返回的是数组对象,可以通过索引解析;()里写的是css选择器,如:.box、#cont等

  1. var ele=document.querySelectorAll(".box");
  2. console.log(ele) //NodeList(2) [div#cont.box, div.box];显示一个数组里面有两个div标签

二:关系选择器

1.父选子:返回数组对象,可以通过索引解析

  1. <body>
  2. <div class="box" a="10" b="20" id="cont" name="wode">
  3. <li class="msg></li>
  4. <li></li>
  5. </div>
  6. <div class="box" id="qqq" name="ppp">
  7. <p><p>
  8. <p></p>
  9. </div>
  10. </body>
  1. var obox=document.querySelector(".box");
  2. console.log(obox.children) // HTMLCollection(2) [li.msg, li];返回class名为box的标签内所有子标签;
  3. //当有多个同级元素时,显示最上面那个

2.子选父:返回单个对象

  1. var omsg=document.querySelector(".msg");
  2. console.log(omsg.parentNode) //<div class="box" a="10" b="20" id="cont" name="wode">

3.第一个子:单个对象

  1. var obox=document.querySelector(".box");
  2. console.log(obox.firstElementChild) ; //<li class="msg"></li>

4.最后一个子:单个对象

  1. var obox=document.querySelector(".box");
  2. console.log(obox.lastElementChild) ; //<li></li>

=================

  1. <body>
  2. <div class="box" a="10" b="20" id="cont" name="wode">
  3. <p></p>
  4. <li class="msg"></li>
  5. <li ></li>
  6. </div>
  7. <div class="box" id="qqq" name="ppp">
  8. <p><p>
  9. <p></p>
  10. </div>
  11. </body>

5.上一个兄弟:单个对象

  1. var omsg=document.querySelector(".msg");
  2. console.log(omsg.previousElementSibling) ; //<p></p>

6.下一个兄弟:单个对象

  1. var omsg=document.querySelector(".msg");
  2. console.log(omsg.nextElementSibling) ; //<li></li>

=================================================================================================================================

三;其他节点选择器

1:父选子:返回数组对象,可以通过索引解析

  1. <body>
  2. <div class="box" a="10" b="20" id="cont" name="wode">
  3. <p></p>
  4. <li class="msg"></li>
  5. <li ></li>
  6. </div>
  7. <div class="box" id="qqq" name="ppp">
  8. <p></p>
  9. <p></p>
  10. </div>
  11. </body>
  1. var obox=document.querySelector(".box");
  2. console.log(obox.childNodes) //NodeList(7) [text, p, text, li.msg, text, li, text];
  3. //其中空格+航换行也是一个文本对象,注释属于注释对象
  4.  
  5. console.log(obox.childNodes[1]) //<p></p>
  6. console.log(obox.childNodes[1]) //#text

2:上一个兄弟:返回单个对象

  1. var omsg=document.querySelector(".msg");
  2. console.log(omsg.previousSibling); //#text;空格换行也是一个文本对象

3:写一个兄弟:返回单个对象

  1. var omsg=document.querySelector(".msg");
  2. console.log(omsg.nextSibling); //#text;空格换行也是一个文本对象

4.第一个子:返回单个对象

  1. var obox=document.querySelector(".box");
  2. console.log(obox.firstChild) //#text;空格换行也是一个文本对象

5.最后一个子:返回单个对象

  1. var obox=document.querySelector(".box");
  2. console.log(obox.lastChild) //#text;空格换行也是一个文本对象

补充:

  1. 节点类型(nodeType) 节点名字(nodeName) 节点值(nodeValue)
  2. 元素节点 标签名 null
  3. 文本节点 #text 文本
  4. 注释节点 #comment 注释的文字
  5. 文档节点 9 #document null
  6. 属性节点 2 属性名 属性值

DOM选择器的更多相关文章

  1. 都别说工资低了,我们来一起写简单的dom选择器吧!

    前言 我师父(http://www.cnblogs.com/aaronjs/)说应当阅读框架(jquery),所以老夫就准备开始看了 然后公司的师兄原来写了个dom选择器,感觉不错啊!!!原来自己从来 ...

  2. 关于一个新的DOM选择器querySelector

    在传统的javascript中,提到DOM选择器,大家比较熟悉的方式是通过tag,name,id来获取,其实大家都发现如果获取比较复杂的话,用这个方法会很繁琐,这时大家应该都会想到jquery里获取一 ...

  3. 一周学会Mootools 1.4中文教程:(1)Dom选择器

    利器: 君欲善其事须先利其器,好吧因为我们的时间比较紧迫,只有六天而已,那么六天的时间用死记硬背的方式学会Mt犹如天方夜谭,因此我们需要借鉴一下Editplus的素材栏帮我们记忆就好了,当我们需要用到 ...

  4. 订制DOM选择器

    本来是打算参考zepto.js,然后将里面想要的部分抽出来做函数,随调随用. 但后面发现这种写法重复代码太多,代码不整洁,于是就打算模仿下zepto的写法,挑出些比较实用的方法,造一下轮子. 起名叫“ ...

  5. 原生的强大DOM选择器querySelector

    在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id ...

  6. Dom选择器及操作文本内容

    文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...

  7. 强大的原生DOM选择器querySelector和querySelectorAll

    在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id ...

  8. 原生JS强大DOM选择器querySelector与querySelectorAll

    在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id ...

  9. 原生的强大DOM选择器querySelector - querySelector和querySelectorAll

    在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id ...

随机推荐

  1. CodeChef Gcd Queries

    Gcd Queries   Problem code: GCDQ   Submit All Submissions   All submissions for this problem are ava ...

  2. 合并石子 (区间dp+前缀和)

    [题目描述] N堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分.计算出将N堆石子合并成一堆的最小得分. [题目链接] http: ...

  3. Codeforces 735E 树形DP

    题意:给你一棵树,你需要在这棵树上选择一些点染成黑色,要求染色之后树中任意节点到离它最近的黑色节点的距离不超过m,问满足这种条件的染色方案有多少种? 思路:设dp[x][i]为以x为根的子树中,离x点 ...

  4. selenium原理(以百度搜索为例)

    1.首先导入 Selenium(webdriver)相关模块2.调用 Selenium 的浏览器驱动,获取浏览器句柄(driver)并启动浏览器.3.通过句柄访问百度 URL.4.通过句柄操作页面元素 ...

  5. Centos 安装.NET Core环境

    https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install 一.概述 本篇讨论如何把项目发布到Linux环境,主要包括 ...

  6. $NOI2014$ 购票(斜率优化 点分治)

    \(NOI2014\)购票 哇终于可以碰电脑了赶快切些火题找找感觉. 拿到这道题的时候发现简单的斜率优化推一推可以秒掉平方做法,然后一条链也可以做. 然后呢... 卧槽这个在一棵树上怎么办啊. 大力\ ...

  7. 在vscode中快速生成vue模板

    点击文件-->首选项-->用户代码片段-->输入vue,此时会打开vue.json文件,将下列代码复制进文件保存即可,新建一个vue文件,输入vue回车即可生成模板,$0表示生成模板 ...

  8. 如何在MaxCompute上处理存储在OSS上的开源格式数据

    0. 前言 MaxCompute作为使用最广泛的大数据平台,内部存储的数据以EB量级计算.巨大的数据存储量以及大规模计算下高性能数据读写的需求,对于MaxCompute提出了各种高要求及挑战.处在大数 ...

  9. CSD编码----数字信号处理--006

    有符号数(Signed Digit Number , SD) SD编码 1.有三重值 {0,1,-1} 2.应用在不用进位的加法器或乘法器中能够降低复杂性 因为通常可以通过非零元素的数来估计乘法的工作 ...

  10. HDU 6638 - Snowy Smile 线段树区间合并+暴力枚举

    HDU 6638 - Snowy Smile 题意 给你\(n\)个点的坐标\((x,\ y)\)和对应的权值\(w\),让你找到一个矩形,使这个矩阵里面点的权值总和最大. 思路 先离散化纵坐标\(y ...