一、DOM的概述

DOM(Document Object Model,文档对象模型)描绘了一个层次化的节点树,允许开发人员添加、移除和修改页面的某一部分。这使得JavaScript操作HTML,不是在操作字符串,而是在操作节点,极大地降低了编程难度。DOM对很多东西做了抽象,提供了丰富的API:取得元素、css样式、事件、运动、元素尺寸位置、节点操作。

二、获取HTMl标签元素

document.getElementById();        //通id获取一个标签元素

document.getElementsByTagName();  //通过标签名获取一组元素

get获取 element 元素 by通过 id就是id属性值。通过某个标签的id属性名获取这个元素

document.getElementById('box');

注意:

1、方法名称要用驼峰命名法,首个单词字母都是小写,后面的单词首字母都大写,其他小写。

2、方法需要通过参数获取元素,参数是标签的id属性值,必须写在引号内,不需要写#

3、获得元素的script标签,一定要在HTML元素位置后面,HTML有加载顺序,获取元素时,元素必须已经找到。

4、id不能重复,而且页面中如果设置表单元素的name属性,也不能与id同名。如果重复,只会选择第一个出现的。

三、操作HTML

多的是操作HTML标签属性。JS可以更改HTML任何属性,比如:src、href、title等。

操作方法:获得标签属性,更改标签属性。

第一种方法:点语法,获得和更改,通过元素对象打点调用方法。

第二种方法:通过getAttribute()获取、setAttribute()设置。需要用元素对象打点调用方法。

class这个属性,要换成className,因为class是JS的保留字,所以不能用。除此之外还有:

class要写成 className

for   要写成 htmlFor

rowspan 要写成 rowSpan

colspan 要写成 colSpan

**************************************************************************************

getAttribute()   获取标签元素的属性

setAttribute()   设置标签元素的属性

<img src="img/2.jpg" alt="这是赵丽颖" title="女神!!!" width="300" id="timg">
<div zhujinlai="100" id="box"></div>
<script type="text/javascript">
var oImg = document.getElementById('timg');
var oBox = document.getElementById('box');
oImg.setAttribute("src","img/3.jpg"); //设置图片的src属性值7
alert(oImg.getAttribute("src")); //获取图片的src属性值
//完全等价于
//oImg.src = "img/3.jpg";
alert(oBox.zhujinlai); //undefined 自定义属性,不是w3c的属性,所以不能用点语法
alert(oBox.getAttribute("zhujinlai")); //自定义属性需要用getAttribute()方法获取

setAttribute和点语法的区别:

1.所有自定义属性,都不能通过点语法设置

<div zhujinlai="100" id="box"></div>
alert(oBox.zhujinlai); //undefined 自定义属性,不是w3c的属性,所以不能用点语法
alert(oBox.getAttribute("zhujinlai")); //自定义属性需要用getAttribute()方法获取

2.所有的行内样式,点语法.style得到是一个样式对象。我们可以通过.style.background继续得到小样式。但是getAttribute()得到的是字符串。

console.log(oBox.style); //object
console.log(typeof oBox.style); //object
console.log(oBox.getAttribute("style")); //string
console.log(typeof oBox.getAttribute("style")); //string

3.getAttibute()不需要避讳,直接:

oBox.getAttribute("width");
setAttribute('width','200px'); //只能设置一种属性值,不能设置多次

四、操作css

获取CSS属性:如果单一属性直接写点语法调用对应的属性名,如果是复合属性,必须用驼峰命名法:

oBox.style.backgroundColor = "skyblue"; 

五、事件监听

事件分为三要素:

1、事件源:就是这个事件的源头

2、事件类型:指的是事件什么发生(点击、触摸)

3、执行指令:匿名函数function(){}

事件源.事件类型 = function(){

执行的指令都写在这

}

常见的事件类型:

onclick         鼠标单击事件

ondblclick      鼠标双击事件

onmouseover     鼠标移入事件

onmouseout      鼠标移出事件

onmousedown     鼠标按下不松手事件

onmouseup       鼠标抬起事件

onfocus         获取焦点事件

onblur          失去焦点事件

onkeydown       键盘按下事件

onload          加载事件(某个元素加载完后,触发的事件)

window对象的加载事件,触发条件:所有的HTML和CSS加载完后,才触发。

特殊用途:帮我们实现事件函数内部的语句需要在HTML和CSS加载完后才执行JS

window.onload = function(){}

window  表示浏览器窗口

onload  表示网页都加载完后执行

Js 对Dom的操作的更多相关文章

  1. 高效率http页面优化法则一【JS对DOM的操作】

    高效http页面优化法则一很多人都认为JS的效率太慢了,都不愿意用js来实现相对困难一点的程序逻辑.在这里我要说的是其实js的效率并不慢,慢的是DOM,如果操作好DOM,你的js效率将提高接近千倍(这 ...

  2. JS对DOM的操作优化法则

    html页面显示过程 解析HTML,并生成一棵DOM tree 解析各种样式并结合DOM tree生成一棵Render tree 对Render tree的各个节点计算布局信息,比如box的位置与尺寸 ...

  3. 原生JS的DOM节点操作

    DOM(Document Object Model/文档对象模型)是针对HTML和XML文档的一个API.DOM节点树:在文档中出现的空格.回车.标签.注释.文本.doctype.标签等都属于DOM节 ...

  4. js的DOM节点操作:创建 ,插入,删除,复制,查找节点

    DOM含义:DOM是文档对象模型(Document Object Model,是基于浏览器编程的一套API接口,是W3C出台的推荐标准.其赋予了JS操作节点的能力.当网页被加载时,浏览器就会创建页面的 ...

  5. JS对DOM节点操作整理

    获取节点: //按照ID获取 document.getElementById('element'); //按照节点名称获取,返回类数组对象 document.getElementsByTagName( ...

  6. js之DOM直接操作

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

  7. Js:DOM对象操作常用的方法和属性

  8. js的dom操作(整理)(转)

    js的dom操作整理(整理)(转) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来来更加方便的进行dom操作 1.dom是什么? 对于JavaS ...

  9. js的DOM操作整理(整理)

    js的DOM操作整理(整理) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来更加方便的进行dom操作 1.dom是什么? 对于JavaScrip ...

随机推荐

  1. PIE_SDK.NET功能表

  2. c# 线程,同步,锁

    最近在阅读<c#高级编程> 这本书.记录一下关于锁的使用 大致分为三种方法: 方法1:使用 lock 方法2:使用 Interlocked 方法3:使用 Monitor using Sys ...

  3. c# 引用类型对象的深拷贝

    c#中的对象大体分为值类型和引用类型,值类型大致包括 int, struct等,引用类型大致包括 自定义Class,object 等.string属于特殊的引用类型,不在本文的讨论之内. 值类型直接存 ...

  4. (转)基于keepalived搭建MySQL的高可用集群

    基于keepalived搭建MySQL的高可用集群  原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...

  5. Git学习系列之 Git 、CVS、SVN的比较

    Git .CVS.SVN比较 项目源代码的版本管理工具中,比较常用的主要有:CVS.SVN.Git 和 Mercurial  (其中,关于SVN,请参见我的博客:SVN学习系列) 目前Google C ...

  6. ubuntu中ANT的安装和配置

    一. 自动安装可以使用sudo apt-get install ant安装,但是这种装法不好.首先安装的ant不是最新的版本,其次还要装一堆其他的附带的东西.所以我才用自己手动ant安装. 二. 手动 ...

  7. ubuntu 64上的GCC如何编译32位程序

    运行命令 gcc -v 显示: Target: x86_64-linux-gnu 所以,我这里的gcc默认生成64位的程序. 如果想编出32位的程序,就要加 -m32选项.可是我尝试了,还是不行. 原 ...

  8. php根据IP获取所在省份-淘宝api接口

    这里用的file_put_contents,你也可以用别的,直接怼代码: //拼接传递的参数$ip = '175.12.53.12' $opts = array( 'http'=>array( ...

  9. Linux 上安装Docker 并部署netcor2.1

    述 容器,顾名思义是用来存放并容纳东西的器皿: 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘,它是一个抽象的概念,同时也是默默存在世上多年的技术,不仅能使应用程序间完全的隔离,而且还能在共享 ...

  10. pdf OCR

    pdf转word等其他可排版编辑格式的软件: ABBYY Finereader: 老牌OCR软件了,支持各种文字.图片.表格的识别,效率比较高,中文的识别效果也很好,公式的转换效率较差. InftyR ...