1. 查找:

按HTML查找:

问题: 每次只能按一个条件查找,如果查找条件复杂,则步骤很繁琐

解决: 选择器:

按选择器查找: 2个API

1. 只查找一个元素:

var elem=parent.querySelector("选择器");

2. 查找多个元素;

var elems=parent.querySelectorAll("选择器");

强调: 可在任意父元素上调用

返回非动态集合: 实际存储属性值,即使反复访问集合,也不会反复查找DOM树

优: 不会反复查找DOM树

缺: 首次查找速度慢

兼容性受制于浏览器的要求

鄙视: 按HTML查找 vs 按选择器查找

1. 返回值: 按HTML查找,返回动态集合

按选择器查找,返回非动态集合

2. 首次查找效率: 按HTML查找,快

按选择器查找,慢

3. 易用性: 按HTML查找, 繁琐
            按选择器查找, 简洁

总结: 如果只靠一个条件,就可找到想要的元素时,首选按HTML查找。

如果查找条件复杂时,首选按选择器查找

2. 修改: 3种:

内容: 3种:

1. 开始标签到结束标签之间的原始HTML代码片段

.innerHTML

2. 开始标签到结束标签之间的纯文本正文

.textContent   IE8: .innerText

多做2件事: 1. 去掉所有内嵌标签;

2. 转义字符翻译为正文;

3. 表单元素的内容/值:  .value

属性: 3种:

1. HTML标准属性: HTML标准中规定的字符串类型的属性

2种:

1. 核心DOM API:

获取一个属性节点: 所有属性节点都保存在元素的attribute集合中

var attr_node=elem.attributes[i/属性名]

var value=attr_node.nodeValue;

获取属性值:
elem.getAttribute("属性名")

修改属性值:
elem.setAttribute("属性名","属性值")

判断是否包含属性:
elem.hasAttribute("属性名")

移除属性: elem.removeAttribute("属性名")

特点: 优: 万能

缺: 繁琐

2. HTML DOM API: 专门操作HTML文档的简化版API

这是对部分API进行了简化

特点: 优: 简单

缺: 不是万能

HTML DOM将所有标准属性,都提前预定义在了元素对象上。可用.直接访问。默认值都是""。

获取属性值: elem.属性名

修改属性值: elem.属性名=属性值

判断是否包含属性: elem.属性名!==""

移除属性: elem.属性名=""

特例: .class属性 要更名为 .className

2. 四大状态属性: enabled   disabled  
checked  selected

因为不是字符串类型,所以不能用核心DOM API访问

只能用HTML DOM打.访问

3. 自定义扩展属性:

什么是: 开发人员在开始标签中添加的自定义的属性

何时: 2种:

1. 临时就近缓存业务数据,避免反复请求服务端

2. 代替class,批量选择多个元素

如何: 2种:

1. <ANY 自定义属性名="值"

获取自定义属性的值: 核心DOM的万能API

ANY.getAttribute("自定义属性名");

ANY.setAttribute("自定义属性名","值")

强调: 不能用HTML DOM的.访问

查找: 属性选择器[自定义属性名=值]

2. HTML5: <ANY  data-自定义属性名="值"

获取或修改时: ANY.dataset.自定义属性名

查找: 属性选择器[data-自定义属性名=值]

样式: 2种:

1. 内联样式:  elem.style.css属性="值"

强调: css属性必须去横线变驼峰

list-style-type -> listStyleType

background-color -> backgroundColor

获取完整样式:

错误:
elem.style  只能获得内联样式

正确: 获得计算后的完整样式

var style=getComputedStyle(elem)

总结: 只要修改元素的样式,都用elem.style

只要获得样式,都用getComputedStyle

强调:
getComputedStyle获得的计算后的样式是只读

因为属性的来源和共享范围不确定

2. 内部样式表/外部样式表:

3步:

1.
获得样式表对象:

var sheet=document.styleSheets[i]

2. 获得CSSRule对象: 样式表中每个{}

var rule=sheet.cssRules[i]

说明: 如果rule是keyframe,则还需要继续向下找一级

3. 获得CSSRule对象中的css属性值

var value=rule.style.css属性

问题: 每个elem.style.css属性只能修改一个css属性

如果批量应用/撤销多个样式时,代码会很繁琐

解决: 今后,只要批量修改样式,都用class属性

DOM-查找和修改的更多相关文章

  1. Dom,查找标签和操作标签

    Dom,查找标签和操作标签 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式 ...

  2. iOS --SQL的增加、删除、查找、修改

    iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Manager的步骤: 第一步:在工具栏找到附加 ...

  3. JavaScript Dom 查找

    JavaScript Dom 查找 一.直接查找 获取单个元素 document.getElementById('i1') 获取多个元素(列表数组) document.getElementsByTag ...

  4. DOM查找

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 415 DOM 查找列表框、下拉菜单控件、对表格元素/表单控件进行增删改操作、创建元素并且复制节点与删除、 对表格操作、通用性和标准的事件监听方法(点击后弹窗效果以及去掉效果)

    DOM访问列表框.下拉菜单的常用属性: form.length.options.selectedindex.type       使用options[index]返回具体选项所对应的常用属性:defa ...

  6. DOM读取和修改节点对象属性

    一.获取和修改元素间的内容(3种) 1.innerHTML 获得/设置元素开始标签和结束标签之间的html原文 固定套路:1.删除父元素下所有子元素:parent.innerHTML="&q ...

  7. Linux查找最近修改的文件

    查找当前目录下.phtml文件中,最近30分钟内修改过的文件. find . -name 查找当前目录下.phtml文件中,最近30分钟内修改过的文件,的详细情况. find . -name -ls ...

  8. DOM节点的修改

    首先,我们将最后段落赋值给变量my: var my = document.getElementById('closer'); 接下来,我们就能够轻松地通过修改对象的innerHTML值来修改段落中的文 ...

  9. HTML DOM 创建与修改

    修改 HTML 元素 修改 HTML DOM 意味着许多不同的方面: 改变 HTML 内容 改变 CSS 样式 改变 HTML 属性 创建新的 HTML 元素 删除已有的 HTML 元素 改变事件(处 ...

  10. TinyXml节点查找及修改

    参考:http://blog.csdn.net/zww0815/article/details/8083550 // 读者对象:对TinyXml有一定了解的人.本文是对TinyXml工具的一些知识点的 ...

随机推荐

  1. Oracle的regexp_instr函数简单用法

    REGEXP_INSTR函数让你搜索一个正则表达式模式字符串.函数使用输入字符集定义的字符进行字符串的计算. 它返回一个整数,指示开始或结束匹配的子位置,这取决于return_option参数的值. ...

  2. Python设计模式 - 总览(更新中...)

    最近打算重构部分python项目,有道是"工欲善其事,必先利其器",所以有必要梳理一下相关设计模式.每次回顾基本概念或底层实现时都会有一些新的收获,希望这次也不例外. 本系列打算先 ...

  3. centos openvpn 安装

    安装环境: 系统:centos 6.5 openvpn:openvpn-2.2.1 lzo:lzo-2.09    下载地址:http://www.oberhumer.com/opensource/l ...

  4. 153. Find Minimum in Rotated Sorted Array (Array; Divide-and-Conquer)

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  5. c语言的基础知识

    break只对应for循环,while循环,switch case分支. (a>b)?y:n    如果A大于B,那么选择Y的结果,如果A小于B,那么选择N的结果. ^在c语言中代表的是按位异或 ...

  6. 公告栏添加时钟——利用canvas画出一个时钟

    前言 最近在学习HTML5标签,学到Canvas,觉得很有趣.便在慕课网找了个demo练手.就是Canvas时钟. 对于canvas,w3shcool上是这么描述的: HTML5 <canvas ...

  7. java 空格替换%20

    public String replaceSpace(StringBuffer str2) { StringBuffer str4 = new StringBuffer(); int length=s ...

  8. Delphi异步编程:匿名线程与匿名方法

    异步编程,是项目中非常有用的而且常用的一种方法,大多以线程实现. 而Delphi传统方法使用线程略为烦琐,好在其后续版本中,提供一些方法,简化一些操作. 几个概念: 匿名线程:TAnonymousTh ...

  9. linux虚拟机ping不通主机和外网(包括刚装系统遇到的一些问题)

    自己ubuntu系统安装了一个virtualBox虚拟机,里面又装了一个ubuntu-server系统: 1.先设置一下字符集,因为一开始装系统的时候选择的是中文,但里面始终无法支持中文,那就算了,反 ...

  10. node.js中npm包管理工具

    现在安装node.js,默认就会帮我们装上了npm包管理工具,npm主要用来下载,安装,管理第三方模块. 创建一个包描述文件: npm init [-y] 查看包的信息 npm info <pa ...