JavaScript-DOM2(内容整理)

这两天新的知识有点多有点杂一时半会没有整理过来,以后不出意外会一直更行。

js节点类型(NODETYPE)

查看节点类型 nodetype属性,返回的结果会根据对象节点的不同返回不同的值。

  • 文档节点(document) 返回值9为对应的常量

    Node.document_node

  • 元素节点 (element)返回值1为对应常量

Node.ELEMENT_NODE

  • 属性节点(attr) 返回值2为对应常量

Node.ATTRIBUTE_NODE

  • 文本节点(text) 返回值3为对应常量

    Node.TEXT_NODE

  • 文档片断节点(documentFragment)返回值11为对应常量

Node.DOCUMENT_FRAGMENT_NODE

  • 文档类型节点 返回值10为对应常量

Node.DOCUMENT_TYPE_NODE

  • 注释节点(comment)返回值8为对应常量。

选区文档内容

DOM里存在着许多选区或者查询一个或多个元素的方法

  • 用指定的id属性

  • 用指定的标签名

  • 用指定的css类

  • 用指定的name属性

  • 匹配指定的css选择器

DOM通过id选区元素

之前我们用的document.getElementById()这个方法,可以可以准确的通过id找到元素,但实际上来说它其实是属于dom。

demo:

var btn = document.getElementById("btn");

当然也可以通过id选择一组元素。

/函数里面的是正则/
function getElements(/*ids*/) {
var elements = {};
for(var i=0;i<arguments.length;i++){
var id = arguments[i]; //此时arguments为复数
var elt = document.getElementById(id); //通过id获取了元素
if(elt === null) { //判断elt是否为空
throw new Error("No element with id:" + id);
//判断条件成立时控制台发出错误
}
elements[id] = elt;
}
return elements;
}

DOM通过标签名获取元素

getElementsByTagName()方法可以用来选取指定类型的(标签名)所有的HTML元素或者XML元素。

//此时之所以要加【0】是应为标签选择器选择的不是一个可以直接使用的量
var test = document.getElementsByTagName(‘p’)[0];

Tip:html标签不区分大小写,在html文档中使用getElementsByTagName()时,将进行不区分大小写的标签名比较。

Tip:给getElementsByTagName()传递通配符*,将获得页面中的所有的元素。

如果要获取一个元素内的子元素可以看一下demo:

<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div>
<span>hello</span>
</div>
</body>
<script>
//根据元素的标签名选中了元素
var div = document.getElementsByTagName('div');
var span = div.getElementsByTagName('span');
</script>
</html>

DOM制定css类名选择元素

使用方式和id类似,但是应为类选择器选择的属性不唯一,所以getelement后面加个s表示附属,因为是复数,所以选取的元素也不是一个可以直接使用的量。

demo:

var one = document.getElementsByClassName(‘class值’);

使用案例

demo:

<script>
var div = document.getElementsByClassName('d1 no'); // 选中class类名中包含d1 和no的标签
var no = document.getElementsByClassName('no');// 匹配了class类名中带有no的标签
</script>

这个方法只能够使用一个字符串参数,但是这个字符串参数可以由多个空格隔开的标识符组成。只有当元素的class属性值包含所有指定的标识符时才能匹配,但是顺序无关紧要。

DOM通过name属性来选取元素

html中也可以通过name来选区元素,但是html中并不是每个元素都拥有name属性的,这其中包括表单,表单元素,iframe 和 img元素。,在表单数据提交到服务器的时候使用改属性的值,类似与id。但是和id的区别是,name属性的值不是必须唯一的,多个元素可以存在相同的name值,类似于input标签里的checkbox多选标签radios单选标签

使用方法:

var input = document.getElementsByName('username');

DOM通过css选择器选取元素

学习了c3选择器以后,在js中我们也可以根据选择器来选取元素,随着c3选择器的标准化,w3c制定了另一个被称为“选择器API”的方法,来获取匹配一个给定选择器的元素方法quertSelectorAll.

该方法接受一个字符串参数,这个参数包含一个css选择器,返回一个表示文档中匹配选择器的所有元素的nodelist对象(说白了就是把所有符合你要求的对象以列表的形式给你展现出来);

需要注意的是,这个方法返回的对象的内容并不是实时的:包含在调用的时刻选择器所匹配的元素,但是并不包含在调用之后匹配的元素。如果没有匹配的元素,将返回一个空的对象。如果选择器异常,将抛出一个异常。

<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div></div>
<div></div>
<div></div>
</body>
<script>
var div = document.querySelectorAll('div');
console.log(div);
</script>
</html>

querySelector()

这个方法与上面类似,只是这个选择器只返回第一个匹配的元素,按照文档顺序返回,如果没有匹配就返回null。

var div = document.querySelector('div');
console.log(div);

Tip:在css3中,新增了两个选择器::first-line 和 :first-letter 等伪元素。这种伪元素实际上匹配的文本节点的一部分,而不是实际的元素。那么当我们使用以上的两种方法的时候,就不会匹配成功。

而且,在很多的浏览器中拒绝返回:link 和:visited等伪类的匹配结果,认为这样会泄露用户的浏览信息。

文档结构和遍历

一旦选取了文档中的一个元素,有时我们需要查找文档中与之在结构上相关的部分(父亲,兄弟,子女)。针对此种问题,js给了我们两个API使用,节点对象树API 和 元素对象树API。

节点对象树API(作为节点树的文档)

Node定义的重要属性:

  • parentNode 找到节点的父节点;

  • childNodes 该节点的子节点

  • firstChild lastChild 该节点中的子节点的第一个或者最后一个

  • nextSibling previoursSibling 该节点的兄弟节点的前一个和下一个

  • nodeValue text节点或者Comment节点的文本内容

  • nodeName 元素的标签名,以大写的形式显示。

    tip:以上的API对文档文本非常敏感,回车空格注释都算在内。

元素对象树API -- 作为元素树的文档

这个API所提供的方法会将文档看做Element文档树,会忽略掉Text和Comment节点。(简单点讲就是忽略文本和注释的节点)。

  • 第一部分

    children 属性 子属性
  • 第二部分

    children 属性 元素属性

elememt属性详解:

  • firstElementChild lastElementChild

  • nextElementSibling perviousElementSibling

  • childElementCount 子元素的数量,返回值和childred.length相等

DOM内容梳理2的更多相关文章

  1. JavaScript内容梳理 示例之模态对话框 示例之全选和反选以及取消 示例之后台管理左侧菜单

    <!DOCTYPE html> <!--示例之模态对话框--> <html lang="en"> <head> <meta c ...

  2. DOM知识梳理

    DOM 我们知道,JavaScript是由ECMAScript + DOM + BOM组成的.ECMAScript是JS中的一些语法,而BOM主要是浏览器对象(window)对象的一些相关知识的集合. ...

  3. DOM简单梳理

    DOM(Document Object Model)是一套对文档的内容进行抽象和概念化的方法. 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML ...

  4. DOM内容操作

    <table border="2"> <thead id="1" class="c1 c2"> <tr> ...

  5. DOM 知识点梳理(笔记)

    1998年10月DOM1级规范成为了W3C的推荐标准,为基本的文档结构及查询提供了接口. 一.Node类型 每个节点都有个nodeType属性,表明了节点的类型.共有12种类型: 元素节点       ...

  6. 老男孩最新Python全栈开发视频教程(92天全)重点内容梳理笔记 看完就是全栈开发工程师

    为什么要写这个系列博客呢? 说来讽刺,91年生人的我,同龄人大多有一份事业,或者有一个家庭了.而我,念了次985大学,年少轻狂,在大学期间迷信创业,觉得大学里的许多课程如同吃翔一样学了几乎一辈子都用不 ...

  7. DOM内容操作和自定义、样式改变

    自定义 function 方法名或函数名(参数1,参数2,...) { 方法体: return返回值:(可不写) } function abc() { alert("123"); ...

  8. 巨蟒django之权限10,内容梳理&&权限组件应用

    1.CRM项目内容梳理: 2.权限分配 3.权限组件的应用

  9. dom内容区域的滚动overflow,scroll

    去掉手机上点击点中的默认高亮效果 -webkit-tap-highlight-color: rgba(0,0,0,0); ios手动启动一下监听touch事件以响应css伪类: document.ad ...

随机推荐

  1. golang微服务框架go-micro 入门笔记2.3 micro工具之消息接收和发布

    本章节阐述micro消息订阅和发布相关内容 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架go-mi ...

  2. 【LEETCODE】70、字符匹配1023 Camelcase Matching

    最近做leetcode总感觉自己是个智障,基本很少有题能自己独立做出来,都是百度... 不过终于还是做出了一题...而且速度效率还可以 哎,加油吧,尽量锤炼自己 package y2019.Algor ...

  3. Bootstrap 遮罩插件jquery.mloading

    使用方法 将jquery.mloading.js和jquery.mloading.css引入到页面,调用: $(element).mLoading({ text:"",//加载文字 ...

  4. 在虚拟机Linux安装Redis

    在虚拟机上安装 CentOS 7 安装成功后登录Root用户进入 opt目录,下载Redis. 下载Redis 下载命令: wget http://download.redis.io/releases ...

  5. springcolud 的学习(二).SpringCloud微服务框架

    为什么选择SpringCloud因为SpringCloud出现,对微服务技术提供了非常大的帮助,因为SpringCloud 提供了一套完整的微服务解决方案,不像其他框架只是解决了微服务中某个问题. 服 ...

  6. PcAnywhere用法

    安装软件 配置被控端 点击"主机",点击"添加" 可以使用"现有的Windows账户",也可以创建新的"用户名和密码" ...

  7. AudioToolbox--利用AudioQueue音频队列,通过缓存对声音进行采集与播放

    都说iOS最恶心的部分是流媒体,其中恶心的恶心之处更在即时语音. 所以我们先不谈即时语音,研究一下,iOS中声音采集与播放的实现. 要在iOS设备上实现录音和播放功能,苹果提供了简单的做法,那就是利用 ...

  8. Hive性能优化【严格模式、join优化、Map-Side聚合、JVM重用】

    一.严格模式 通过设置以下参数开启严格模式: >set hive.mapred.mode=strict;[默认为nonstrict非严格模式] 查询限制: 1.对于分区表,必须添加where查询 ...

  9. IDEA整合SVN遇到的坑

    1.安装SVN客户端   注意客户端版本与汉化插件的版本匹配问题,否则汉化无效 2.安装客户端时第二项默认不安装记得要手动选择为安装,否则不会生成svn.exe,这个文件会在IDEA中配置 3.安装客 ...

  10. Python+opencv图像识别

    图像识别 最近工作遇到了一个需要识别安全键盘并点击的需求,做自动化嘛,由于安全键盘的键位固定但是键值随机,所以常规的方法不能正确获取触发点击,so,上网查了一下基本思路都是用机器识别. 加载openc ...