[TOC]

一、简单了解DOM

DOM(document object mode 文档对象模型),通过HTML DOM,JavaScrip能够访问和改变HTML文档的所有元素.
那么,DOM能干啥呢?借助DOM,JavaScript能 (增删改查) 1、改变页面中的所有的Html元素,Html属性和css样式。 2、删除页面中的所有的Html元素、Html属性。3、能添加新的Html元素,Html属性。4、对页面中所有已有的HTML事件作出反应。5、能在页面中创建新的HTML事件。

二、HTML DOM方法

DOM方法是您能够在HTML上执行的操作。下面例子 改变 id = “demo”的

元素的属性.


说明:在此,getElementById( )是方法,通过使用元素的id名 来访问Html元素; innerHTML 是属性,用于获取或替换 HTML元素的内容。
innerHTML(获取所访问元素内的标签以及内容) 和 innerText(只获取到所访问html元素内的内容)) 的区别;


hello word




注意:文档对象代表您的网页,如果你希望访问HTML页面中的任何元素,那么总是从访问document对象开始,

1、获取HTML元素:

document.getElementById( ‘ id名’ )
document.getElementTagName( ‘ 标签名’ )
document.getElementClassName( ‘ 类名’ )
document.querySelector( ‘ #id / .class /标签名 ‘ )
document.querySelectorAll( ‘ #id / .class /标签名 ‘ )
通过 Html 对象选择器来查找 html对象???????????????????

2、常用的DOM方法:

document.createElement(element) //创建HTML元素
document.removeChild(element) //删除HTML元素
document.appendChild(element) //添加html元素
document.replaceChild (element) //替换html元素
document.write(text) //写入html输出流

3、添加事件处理程序:

document.getElementById( ‘id’ ).onclick = function(){ }

4、DOM实现“改”

4-1 改变html输出流 : HTML DOM 允许javaScript改变HTML的内容, 在JavaScript中,document.write( ) 可用来直接写入 HTML输出流。即: 创建HTML内容注意:千万不要在文档加载后使用 document.write( ) ,,这么做会覆盖文档。
例:

4-2 改变HTML内容 document.getElementById(id).innerHTML = new text;
4-3 改变属性的值 document.getElementById(id).属性 = new value;
例:
JavaScript HTML DOM - 图1

5、JavaScript HTML DOM 改变css

        document.getElementById(id).style.property = new style;  //property使用驼峰命名来调用<br />例: <body><br />                <p id="colorstyle">dom改变样式</p><br />              <script><br />                        document.getElementById('colorstyle').style.color = "red";<br /></script><br />          </body>

6、使用事件

当“某些事情”在HTML元素上发生时,浏览器会生成事件: 点击某个元素时
页面加载时
输入字段被更改时
上面例子也可:

dom改变样式


//注意: 下面这段代码是写在 body中,而不是

改进:
试一试


四、事件对象

1、event 对象: 每个事件被触发时,都会产生一个event对象
2 、target 和 currentTarget
○ target表示被触发的元素(比如: 点击事件就是被点击的元素)
○ currentTarget是事件绑定的元素

五、事件监听器

1、事件监听器 addEventListener ( ) 方法

                        element.addEventListener ( event,function,useCapture)   <br />  第一个参数:事件类型(如: "click" 或 "onmousedown"等)<br />  第二个参数: 当事件发生时我们需要调用的函数。<br />  第三个参数是 布尔值,指定事件传播方法 是 事件冒泡(false)还是事件捕获(true)<br />  注意:请勿对事件使用“on”前缀,请使用 "click"来代替 "onclick"<br />   document.getElementById( 'myButton' ).addEventListener(' click', ' displatDate');

2、向元素添加事件处理程序

{alert(“hello word”);});
也可以引用外部“命名”函数:
element.addEvenListener( ‘click’,myFunction( ));
function myFunction( ){
alert(“hello word”);
}

3、给相同的元素添加不同类型的事件

element.addEvenListener( ‘click’, myFunctionxx);
element.addEvenListener( ‘click’, myFunctionyy);

4、在同一元素上添加许多不同的事件

element.addEvenListener( ‘click’, myFunctionxx);
element.addEvenListener( ‘mouseover’, myFunctionyy);
element.addEvenListener( ‘mouseout’, myFunctionzz);

5、向windows对象添加事件处理程序

window,addEventListener(‘resize’,function( ){
document.getElementById(“demo”).innerHTML = sometext;
} );

6、事件冒泡和事件捕获

在HTML DOM 中有两种事件传播的方法: 事件冒泡 和 事件捕获


冒泡: 最内侧元素的事件会首先被处理,然后是更外侧的: 首先处理

元素的点击事件,然后是

元素的点击事件。
捕获:最外侧元素的事件首先被处理,然后是更内侧的: 首先处理
元素的点击事件,在处理

元素的点击事件.



事件冒泡


逆流UIUI尽力碧波拉你不怕


#### 7、移除 remoteEvenListener( ) 方法会删除通过 addEventListenner( )方法附加的事件处理程序。 ### 五、添加和删除节点(HTML元素) #### 1、创建新HTML元素(节点)

这是原本的段落1


这是原本的段落2





#### 2、删除已有的HTML元素

这是原本的段落1


这是原本的段落2



var parent = document.getElementById(‘div1’);
var child = document.getElementById(‘p1’);
parent.removeChild(child); 找父节点: var child = document.getElementById(‘p1’);
child.parentNode.removeChild(child); #### 3、替换HTML元素 parent.replaceChild(新元素, 旧元素);
例如:


这是原本的段落1


这是原本的段落2





典型案例:to-do-list添加、删除
<!DOCTYPE html>