DOM(Document Object Model)即文档对象模型,针对HTML 和XML 文档的API(应用程序接口)。DOM 描绘了一个层次化的节点树,运行开发人员添加、移除和修改页面的某一部分。DOM 脱胎于Netscape 及微软公司创始的DHTML(动态HTML),但现在它已经成为表现和操作页面标记的真正跨平台、语言中立的方式。

一.DOM介绍
DOM 中的三个字母,D(文档)可以理解为整个Web 加载的网页文档;O(对象)可以理解为类似window 对象之类的东西,可以调用属性和方法,这里我们说的是document
对象;M(模型)可以理解为网页文档的树型结构。DOM 有三个等级,分别是DOM1、DOM2、DOM3,并且DOM1 在1998 年10 月成为W3C 标准。DOM1 所支持的浏览器包括IE6+、Firefox、Safari、Chrome 和Opera1.7+。PS:IE 中的所有DOM 对象都是以COM 对象的形式实现的,这意味着IE 中的DOM可能会和其他浏览器有一定的差异。

1.节点
加载HTML 页面时,Web 浏览器生成一个树型结构,用来表示页面内部结构。DOM 将这种树型结构理解为由节点组成。

二.查找元素
W3C 提供了比较方便简单的定位节点的方法和属性,以便我们快速的对节点进行操作。分别为:getElementById()、getElementsByTagName()、getElementsByName()、getAttribute()、setAttribute()和removeAttribute()。

1.getElementById()方法
getElementById()方法,接受一个参数:获取元素的ID。如果找到相应的元素则返回该元素的HTMLDivElement 对象,如果不存在,则返回null。

  1. document.getElementById('box'); //获取id 为box 的元素节点
  1. window.onload = function () { //预加载html 后执行
  2. document.getElementById('box');
  3. };
  1. document.getElementById('box').id; //获取id
  2. document.getElementById('box').id = 'person'; //设置id
  3. document.getElementById('box').title; //获取title
  4. document.getElementById('box').title = '标题' //设置title
  5. document.getElementById('box').style; //获取CSSStyleDeclaration 对象
  6. document.getElementById('box').style.color; //获取style 对象中color 的值
  7. document.getElementById('box').style.color = 'red'; //设置style 对象中color 的值
  8. document.getElementById('box').className; //获取class
  9. document.getElementById('box').className = 'box'; //设置class
  10. alert(document.getElementById('box').bbb); //获取自定义属性的值,非IE 不支持

2.getElementsByTagName()方法

getElementsByTagName()方法将返回一个对象数组HTMLCollection(NodeList),这个数组保存着所有相同元素名的节点列表。

  1. document.getElementsByTagName('*'); //获取所有元素
  2. document.getElementsByTagName('li'); //获取所有li 元素,返回数组
  3. document.getElementsByTagName('li')[0]; //获取第一个li 元素,HTMLLIElement
  4. document.getElementsByTagName('li').item(0) //获取第一个li 元素,HTMLLIElement
  5. document.getElementsByTagName('li').length; //获取所有li 元素的数目

3.getElementsByName()方法

getElementsByName()方法可以获取相同名称(name)的元素,返回一个对象数组HTMLCollection(NodeList)。

  1. document.getElementsByName('add') //获取input 元素
  2. document.getElementsByName('add')[0].value //获取input 元素的value 值
  3. document.getElementsByName('add')[0].checked //获取input 元素的checked 值

4.getAttribute()方法

getAttribute()方法将获取元素中某个属性的值。它和直接使用.属性获取属性值的方法有一定区别。

  1. document.getElementById('box').getAttribute('id');//获取元素的id 值
  2. document.getElementById('box').id; //获取元素的id 值
  3. document.getElementById('box').getAttribute('mydiv');//获取元素的自定义属性值
  4. document.getElementById('box').mydiv //获取元素的自定义属性值,非IE 不支持
  5. document.getElementById('box').getAttribute('class');//获取元素的class 值,IE 不支持
  6. document.getElementById('box').getAttribute('className');//非IE 不支持

5.setAttribute()方法

setAttribute()方法将设置元素中某个属性和值。它需要接受两个参数:属性名和值。如果属性本身已存在,那么就会被覆盖。

  1. document.getElementById('box').setAttribute('align','center');//设置属性和值
  2. document.getElementById('box').setAttribute('bbb','ccc');//设置自定义的属性和值

6.removeAttribute()方法

  1. document.getElementById('box').removeAttribute('style');//移除属性

三.DOM节点
1.node 节点属性
节点可以分为元素节点、属性节点和文本节点,而这些节点又有三个非常有用的属性,分别为:nodeName、nodeType 和nodeValue。
信息节点属性

节点类型  nodeName   nodeType   nodeValue
元素元素   名称                1               null
属性       属性名称            2             属性值
文本        #text              3        文本内容(不包含html)

  1. document.getElementById('box').nodeType; //1,元素节点

2.层次节点属性
节点的层次结构可以划分为:父节点与子节点、兄弟节点这两种。当我们获取其中一个
元素节点的时候,就可以使用层次节点属性来获取它相关层次的节点。

层次节点属性

childNodes            获取当前元素节点的所有子节点
firstChild              获取当前元素节点的第一个子节点
lastChild               获取当前元素节点的最后一个子节点
ownerDocument    获取该节点的文档根节点,相当与document
parentNode           获取当前节点的父节点
previousSibling      获取当前节点的前一个同级节点
nextSibling           获取当前节点的后一个同级节点
attributes             获取当前元素节点的所有属性节点集合

四.节点操作
DOM 不单单可以查找节点,也可以创建节点、复制节点、插入节点、删除节点和替换节点。

节点操作方法

write()                 这个方法可以把任意字符串插入到文档中
createElement()   创建一个元素节点
appendChild()      将新节点追加到子节点列表的末尾
createTextNode() 创建一个文件节点
insertBefore()      将新节点插入在前面
repalceChild()     将新节点替换旧节点
cloneNode()        复制节点
removeChild()     移除节点

DOM基础的更多相关文章

  1. HTML DOM基础知识

    HTML DOM基础知识 一.什么是DOM? 1.HTML DOM 定义了访问和操作HTML文档的标准方法. 2.HTML DOM 把 HTML 文档呈现为带有元素.属性和文本的树结构(节点树). 3 ...

  2. Javascript DOM基础(一)概念

    Dom基础概念: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" ...

  3. jQuery DOM基础

    jQuery DOM基础 1.对元素内容的获取和修改: 表单用value(),普通元素用html()和text(). html()  html(value)设置和获取html内容,有html标签会自动 ...

  4. js入门——Dom基础

    DOM=DocumentObject Model,文档对象模型. Dom有三个不同的部分. 1.核心DOM 也是最基础的文档结构的标准模型 2.XMLDOM 针对XML文档的标准模型 3.HTML D ...

  5. 第一百一十三节,JavaScript文档对象,DOM基础

    JavaScript文档对象,DOM基础 学习要点: 1.DOM介绍 2.查找元素 3.DOM节点 4.节点操作 DOM(Document Object Model)即文档对象模型,针对HTML和XM ...

  6. DOM基础(四)

    每次写DOM的时候,就觉得好像没什么好写,因为涉及到知识点的方面的确不多,对于DOM来说,更多的还是练习为主.在练习的时候,最好能结合着js基础语法的知识点来学习.这样,在学习DOM的时候就不会那么枯 ...

  7. DOM基础(二)

    在我之前写的DOM基础(一)的文章中提到过兼容性的问题,也就是在获取标签间文本信息的时候,早期的火狐版本是不支持innerText的,只支持textContent ,现在的火狐浏览器两者都支持.而IE ...

  8. BOM基础 计时器 定时器 DOM 基础

    -------------------------------------------滴水穿石,我心永恒. day48 CSSJS 1 ECMA script 2 BOM browser object ...

  9. 第五讲 DOM基础

    DOM基础: 什么是DOM:其实就是dovument,div获取.修改样式等等,但是不只是js的组成部分,而且还是一套规范,规定了这些浏览器怎么处理这些操作: 浏览器支持情况:IE(IE7-8,10% ...

  10. JavaScript Dom基础-9-Dom查找方法; 设置DOM元素的样式; innerHTML属性的应用; className属性的应用; DOM元素上添加删除获取属性;

    JavaScript Dom基础 学习目标 1.掌握基本的Dom查找方法 domcument.getElementById() Domcument.getElementBy TagName() 2.掌 ...

随机推荐

  1. JSTL标准标签库 (使用foreach打印集合)

    <%@page import="java.util.*"%><%@ page language= "java" contentType=&qu ...

  2. ios -网络加载json和本地加载json

    1网络加载json的时候,要在模型的实现文件里写: - (void)setValue:(id)value forKey:(NSString *)key { } 2本地加载json的时候,要在模型的实现 ...

  3. RIDE安装遇到的问题及解决方法

    1.按照虫师的方法,下载的wxpython3.0 ,启动robotframework-ride,无效,因为版本不一致,所以我又根据终端提示的网址:http://sourceforge.net/proj ...

  4. Splinter学习--初探1,模拟百度搜索

    Splinter是以Selenium, PhantomJS 和 zope.testbrowser为基础构建的web自动化测试工具,基本原理同selenium 支持的浏览器包括:Chrome, Fire ...

  5. C# Winform学习--- 实现石头剪刀布的游戏

    本文使用winform实现简单的石头剪刀布的游戏,主要实现,电脑随机出拳,玩家手动点击出拳:实现简易背景图片3秒切换:简易统计信息. 1.效果图 2.实现代码 新建一个windows窗体程序,用数字1 ...

  6. 深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow

    深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow 最近在公司做深度学习相关的学习和实验,原来一直 ...

  7. java 删除所有HTML工具类

    import java.util.regex.Matcher;import java.util.regex.Pattern; public class HtmlUtil { private stati ...

  8. ASP.NET控件<ASP:Button /> html控件<input type="button">区别联系

    ASP.NET控件<ASP:Button />-------html控件<input type="button">杨中科是这么说的:asp和input是一样 ...

  9. Daily Scrum 12.16

    今日完成任务: 完善了资源界面的UI设计:解决了PDF显示相同的问题:解决了下载时有时找不到文件的问题,因为上届建了upload和resource两个文件夹存文件,写代码时候写乱套了. 明日任务: 黎 ...

  10. eclipse配置javaee环境

    笔者开发javaee项目时惯用myeclipse,但由于个人笔记本性能较低,myeclipse对内存的消耗极大,所以考虑换成eclipse开发.本文介绍eclipse配置javaee开发环境的一些体会 ...