DOM精简版笔记
1.1. 基本概念
1.1.1. DOM
DOM Document Object Model 文档对象模型
就是把HTML文档模型化,当作对象来处理
DOM提供的一系列属性和方法可以视作一个工具箱,极大地方便了我们对文档的处理。
1.1.2. 内容概念
文档(Document):就是指HTML或者XML文件
节点(Node):HTML文档中的所有内容都可以称之为节点,常见的节点有
元素节点 属性节点 文本节点 注释节点
元素(Element):HTML文档中的标签可以称为元素
1.1.3. 结构概念
父节点 当前节点的父级
子节点 当前节点的子级
兄弟节点 和当前节点同属一个父级的节点
1.2. 获取元素
getElementById
通过id寻找一个元素(找到的是一个元素对象) 该方法只能被document对象调用(同一个文档中id不能重复)
getElementsByTagName
通过标签名寻找一类元素(找到的是由元素对象组成的伪数组)
即可以被document调用,又可以被元素对象调用,被元素对象调用时表示在该元素对象内部执行查找
1.3. 设置属性
元素对象.属性名 = “属性值”;
等价于
<标签 属性名=”属性值”>
1.4. 绑定事件
事件三要素
事件源.事件 = function(){ 事件处理程序 };
等价于
<标签 事件=”事件处理程序”>
对象方法中的this永远指的是该方法所属的那个对象
1.5. 常用属性
1.5.1. 常用标签属性
DOM对象的属性和HTML的标签属性几乎是一致的,常用的有src、title、className、href和style
其中className对应就是标签的class属性,但是由于class在JS中是关键字,所以变成了className
1.5.2. 内部文本属性
innerHTML
获取和设置标签中的内容,设置的内容会当作节点对象被解析到DOM树上
innerText
获取和设置标签中的内容,设置的内容会被当作普通文本(有兼容性问题,旧版ff不支持)
textContent
获取和设置标签中的内容,设置的内容会被当作普通文本(有兼容性问题,旧版IE不支持)
可以通过能力检测封装一个自己的设置内部文本的方法并放到自己的JS工具包中
1.5.3. 常用表单属性
常见的表单元素属性有: type、value、checked、selected、disabled
type可以设置input元素的类型
value可以设置input元素的值
checked可以设置input元素是否选中
selected 可以设置下拉列表select中的option是否被选中
disabled 可以设置input元素是否被禁用
文本框获取焦点和失去焦点
获取焦点事件是onfocus 失去焦点事件是onblur (不是所有的标签都有这个事件) 更多详细内容可以查阅w3School
1.5.4. 自定义属性
对象的自定义属性
可以像给对象设置属性一样,给元素对象设置属性
标签的自定义属性
可以通过getAttribute()和setAttribute()设置和获取标签属性,通过removeAttribute()移除标签的属性
正常浏览器中 HTML中有规定的属性 两种方式才可以相互设置和获取
总之用setAttribute设置的就用getAttribute获取 用对象的自定义属性设置的就用对象的自定义属性获取 以免出问题
1.6. 节点
1.6.1. 节点类型
node.nodeType
1表示元素节点 2表示属性节点 3表示文本节点
1.6.2. 节点层次
所有获取节点相关属性都没有兼容性问题
childNodes //子节点
children //子元素 虽然不是早期DOM标准中的方法,但是所有浏览器都支持
nextSibling //下一个兄弟节点
nextElementSibling //下一个兄弟元素 有兼容性问题
previousSibling//上一个兄弟节点
previousElementSibling //上一个兄弟元素 有兼容性问题
firstChild //第一个节点
firstElementChild //第一个子元素 有兼容性问题
lastChild //最后一个子节点
lastElementChild //最后一个子元素 有兼容性问题
parentNode //父节点 (一定是元素节点,所以无需处理)
1.7. 样式属性
style属性是对象,style对象的属性是字符串
style只能获取和设置行内样式
DOM对象中style的属性和标签中style内的值几乎一样
只是带有 - 的属性名较为特殊(如background-color变成了backgroundColor),因为在JS中 - 不能作为标识符
设置和获取样式
//通过对象的style属性只能设置和获取行内样式
//获取样式的时候 如果行内没有该样式 输出空字符串
//设置样式的时候 赋的值是一个字符串 如果这个属性有单位 一定要节点加单位
什么情况通过class控制样式 什么情况通过style控制样式
不严格的说:
//如果样式很多 通过 直接控制类名 的方式加样式
//如果样式比较少 通过直接设置比较方便
严格来说:
//从标准的角度讲 即使是样式比较少的时候 设置样式也要用类名
//但是有一类情况 是无论如何也必须直接通过JS加的 那就是涉及到计算的时候
1.8. 动态创建元素
1.8.1. 插入和移除节点
在父元素中的最后追加子元素
father.appendChild(要追加的元素);
在父元素中的某个子元素前面插入子元素
father.insertBefore(要插入的元素,插到这个元素的前面);
从父元素中移除子元素
father.removeChild(要移除的子元素);
1.8.2. 动态创建结构
方式一:直接在文档中书写
document.write(“内容”)
方式二:改变元素对象内部的HTML
innerHTML=”内容”
方式三:创建或克隆节点并追加
createElement()
cloneNode()
通过这两种方法创建出来的元素只是保存在内存中,必须放到页面上才行!
DOM精简版笔记的更多相关文章
- BOM和DOM(精简版)
一.BOM 1.browser object model的缩写,简称浏览器对象模型 2.提供与浏览器窗口进行交互的对象 3.核心对象:window.除此之外还有:history,localtion,n ...
- HTML DOM(学习笔记二)
嗯,在HTML DOM(学习笔记一)中简单描述了一下HTML DOM 是什么,这一篇将记录下来有关HTML DOM的内容! 1:DOM节点 首先,再来看一下HTML DOM的树状结构,如下图所示: 这 ...
- 用 JS 点击左右按钮 使图片切换 - 最精简版-ljx2380000-ChinaUnix博客
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- Vue精简版风格指南
前面的话 Vue官网的风格指南按照优先级(依次为必要.强烈推荐.推荐.谨慎使用)分类,且代码间隔较大,不易查询.本文按照类型分类,并对部分示例或解释进行缩减,是Vue风格指南的精简版 组件名称 [组件 ...
- HTML DOM简易学习笔记
文字版:https://github.com/songzhenhua/github/blob/master/HTML DOM简易学习笔记.txt 学习地址:http://www.w3school.co ...
- Linux上oracle精简版客户端快速部署
RHEL6 + Oracle 11g客户端快速部署 需求:只是用到客户端的sqlplus, sqlldr功能. 方案:用精简版实现客户端的快速部署 1.上传oracle精简版客户端到服务器/tmp目录 ...
- C++ Primer Plus 第六版笔记
C++ Primer Plus 第六版笔记 关于对象声明的思考 转自:http://www.cnblogs.com/weiqubo/archive/2009/11/02/1930042.html C+ ...
- ArcGIS10.2.1精简版、ArcGIS_Desktop10_Tutorial、破解文件等下载地址
原版ArcGIS for Desktop的ISO文件一般都在4.5G以上,一般人用不上里面很多工具,下载回来又浪费时间,现推出ArcGIS10.2.1精简版(里面只包含主程序.Data Interop ...
- TeamViewer12.0.71503(远程控制软件)精简版 单文件企业版介绍
TeamViewer 是一款能在任何防火墙和 NAT 代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamViewer 即可 ...
随机推荐
- Linux之间用SSH传输文件 一行命令实现
把本机的文件传到目标: cd /home/ && tar czv test | ssh root@HostIP -p 22 'tar xz' 解释: 如你所见,这行命令其实由多个命令组 ...
- GRUB2 命令行使用笔记
在GRUB界面按C可进入命令行模式,学会命令行模式有助于玩转单机多OS. 磁盘描述规则: hd0,0 表示第1硬盘第1分区 help 显示帮助(内容会比这里全,此处只做几条常用命令介绍) cat 命令 ...
- 关于python中生成器之Send方法
#send主要是用于外部与生成器对象的交互def func1(): # 生成器函数 print("ok1") x = 10 # 函数内局部变量x赋值为10 print(x) x = ...
- day19常用模块2
常用模块21 shelve模块 也是一种序列化方式 使用方法 1.open sl = shelve.open("shelvetest.txt") ...
- vuejs实现瀑布流布局(一)
一直以来,习惯了jquery的DOM操作方式,突然间,开始学习使用vuejs,很多时候,操作DOM观念总是转换不过来,虽然也能实现各种效果,但是总有点不伦不类的. 就类似于最近在做的瀑布流布局,正常的 ...
- tkinter pyqt同时呈现两个窗口
- tomcat及nginx相关,格式化输出,配置及日志解析
1.https://www.cnblogs.com/jingmoxukong/p/8258837.html?utm_source=gold_browser_extension Tomcat ...
- JSP-打印动态表格
input.html <script language="javascript"> function validate(f){ if(!(/\w+/.test(f.in ...
- MVC基于角色权限控制--菜单展示
在用户成功登陆后台页面后,我们需要将当前用户拥有的权限通过菜单的形式展现出来,将未具备的权限隐藏 新建一个HomeController,用于展示后台首页和获取用户权限数据 namespace CZBK ...
- 【平台兼容性】jeecg3.7 兼容weblogic 部署改造方案
MyEclipse 配置 WebLogic 10.3.3请参考: https://my.oschina.net/aini3884/blog/895689 常见问题: 1. problem: cvc-e ...