DOM 3

1. 添加/删除元素

2. ***HTML DOM常用对象

select/option    table/行分组/tr/td    form

1. 添加/删除元素:

添加: 3步:

1. 创建新的空元素:

var a=document.createElement("a");

相当于: <a></a>

2. 设置元素的关键属性:

a.href="http://tmooc.cn"

a.innerHTML="go to tmooc";

相当于: <a href="http://tmooc.cn">go to tmooc</a>

3. 将元素添加到DOM树上:

3种:

1. 末尾追加: parent.appendChild(a)

2. 插入在一个现有元素之前:

parent.insertBefore(a,oldElem)

3. 替换现有元素: parent.replaceChild(a,oldElem)

***页面加载过程:

html->DOM Tree

Render Tree->***layout->paint

css->CSSRules

结论: 只要修改DOM树的内容,都会导致重新layout

解决: 优化: 尽量少的操作DOM树

1. 如果同时添加父元素和子元素

先再内存中将子元素添加到父元素,再将父元素一次性添加到DOM树

1. 添加/删除元素

2. ***HTML DOM对象

select/option table/行分组/tr/td  form

1. 添加/删除元素

优: 尽量少的操作DOM树

如何:

1. 如果同时添加父元素和子元素时,都要先将子元素添加到父元素,再将父元素整体添加到DOM树一次即可

2. 如果同时添加多个平级元素时,都要用文档片段

文档片段: DocumentFragment

内存中临时存放多个平级元素的虚拟的临时父元素

何时: 如果同时添加多个平级元素时,都要先将平级元素添加到文档片段中。再将文档片段一次性添加到DOM树

如何:

1. 创建文档片段:

var frag=document.createDocumentFragment();

2. 将子元素添加到frag中: frag.appendChild(child)

3. 将frag添加到DOM树: parent.appendChild(frag)

frag将子元素添加到DOM树后,自动释放。

删除元素: 1. 先找到要删除的元素对象elem

2. parent.removeChild(elem)

elem.parentNode.removeChild(elem);

2. ***HTML DOM常用对象:

Image   Select/Option    Table/...     Form

1. Image: 代表一个<img元素

唯一的简化: var img=new Image();

2. Select: 代表一个<select元素

属性:

.selectedIndex: 获得select中当前选中项的下标

.options: 获得select中所有的option元素对象

.options.length: option元素的个数

=0可清除所有option

其实select.length等效于select.options.length

最简单的清除所有option的办法: select.length=0;

.value: 当前select元素选中项的值

2种情况:

1. 如果选中项有value属性,则使用选中项的value属性

2. 如果选中项没有value属性,则使用text作为value

方法:

.add(option) => .appendChild

.remove(i) => select.removeChild(select.options[i])

事件:

.onchange: 当选中项发生改变时

Option: 代表一个<option元素

创建:

var opt=new Option(text,value)

属性:

.index: 当前option在select中的下标

.value:

.text => .innerHTML

selected:

其实向select中添加一个option的最简单写法:

sel.add(new Option(text,value));

3. Table: 代表<table元素

table

.createTHead()=>thead

.deleteTHead()

.tHead

.insertRow(i) => tr //在i位置插入一个新行

省略i, 默认表示末尾追加

.deleteRow(i);//删除i位置的行

.rows //获得thead中的所有行对象

.rows[i]=>tr

属性: .rowIndex 获得当前tr相对于整个table的行下标

.insertCell(i) => td //i位置添加一个新td

省略i, 默认表示末尾追加

.deleteCell(i)

.cells //获得行中的所有格

.cells[i] => td

.createTBody() tbody

.tBodies/tBody

.createTFoot() tfoot

.deleteTFoot()

.tFoot

删除行:

2种: 1. 用行分组.deleteRow(i)

i : 指的是行在当前分组内的下标位置

2. 用table.deleteRow(i)

i: 指的是行在整个table中的下标位置

——tr.rowIndex

只要用rowIndex删除行,必须用table.deleteRow(...)

补: 三类对话框: 都不用

alert("警告");

var bool=confirm("确认提示");

点确定->true

点取消->false

var input=prompt("输入提示")

时间: 2024-10-10 18:56:21

DOM 3的相关文章

虚拟DOM

DOM(Document Object Model)是很慢的,其元素非常庞大,页面的性能问题鲜有由JS引起的,大部分都是由DOM操作引起的.如果对前端工作进行抽象的话,主要就是维护状态和更新视图:而更新视图和维护状态都需要DOM操作. 在jQuery出现以前,我们直接操作DOM结构,这种方法复杂度高,兼容性也较差:有了jQuery强大的选择器以及高度封装的API,我们可以更方便的操作DOM,jQuery帮我们处理兼容性问题,同时也使DOM操作变得简单:MVVM使用数据双向绑定,使得我们完全不需要

JS学习--DOM

1.概念 文档对象模型DOM,定义访问和处理HTML文档的标准方法.DOM将HTML呈现为带有元素.属性和文本的树结构(节点树). 2.document.getElementById("id")--获取的是一个元素对象. documment.getElementById("id").innerHTML--才可获取其中的内容. 3.HTML样式 Object.style.property=new style;部分属性: 如: mychar.style.color=&q

高性能WEB开发:DOM编程

我们知道,DOM是用于操作XML和HTML文档的应用程序接口,用脚本进行DOM操作的代价很昂贵.有个贴切的比喻,把DOM和Javascript(这里指ECMscript)各自想象为一个岛屿,它们之间用收费桥梁连接,ECMAscript每次访问DOM,都要途径这座桥,并交纳"过桥费",访问DOM的次数越多,费用也就越高.因此,推荐的做法是尽量减少过桥的次数,努力待在ECMAscript岛上.我们不可能不用DOM的接口,那么,怎样才能提高程序的效率? 1.DOM访问与修改 访问DOM元素是

dom方法insertAfter的实现

在dom的原生api中,只用insertBefore,没有insertAfter,借助原有的api,可以模拟一个insterAfter. function insterAfter(newElement,targetElement){ var parent = targetElement.parentNode; if(parent.lastChild == targetElement){ parent.appendChild(newElement); } else{ parent.insertBe

第十章—DOM(0)—NODE类型

DOM1定义了一个node接口,该接口由DOM的所有节点类型实现. 所有的节点都存在这样或那样的关系.在HTML中,head,body可以看出是html的子元素,html是head,body的父元素,而head,body互为同胞元素. 这里要注意一个概念:nodeList 输出: 如下例子: 1 <div id="myDiv"> </div><!-- 此处有空格 --> 2 <script> 3 var div = document.ge

对dom的初步了解

什么叫DOM,DOM是文档对象模型Document Object Model DOM树 : 根结点(document) 父结点(parentNode) 子结点(childNodes) 兄弟结点 兄弟结点 sibling) (sibling) DOM在HTML文档中常见的几种结点类型:1.DOCUMENT_NODE (document)文档根结点类型,该枚举型的值是9. 2.ELEMENT_NODE (element)元素结点类型,该枚举型的值是1.上文中的html, body, div这些结点都

DOM基础(一)

在我们刚刚学JavaScript的时候,就应该听说过,JavaScript是由三部分组成的.分别是ECMAScript,DOM和BOM组成的.ECMAScript是JavaScript的核心,它描述了JavaScript的基本语法和对象,DOM则是描述了处理网页内容的方法和接口,而BOM描述了与浏览器进行交互的方法和接口.在我之前的关于JS入门系列的文章里,就讲了许多关于JavaScript的基本语法和对象,也就是ECMAScript.而在这个DOM系列的文章里,我将会介绍一些关于DOM的基础.

python2.0_s12_day13_javascript&amp;Dom&amp;jQuery

今天主要内容:JavaScriptDomjQuery http://www.cnblogs.com/wupeiqi/articles/5369773.html 今天主要内容大致了解:javascript 1.首先要知道 JavaScript 和 Java 没有半毛钱关系. 2.JavaScript 和python语言 一样 它也是一门语言.对于python语言需要用python解释器解释.而javascript的解释器是浏览器. 3.javascript 能实现什么.javascript就是让我

BOM和DOM

BOM 浏览器对象模型 BOM中的对象 Window对象:是指窗口对象,可通过Window对象的属性和方法控制窗口,例如打开或关闭一个窗口 History对象:指历史页面,通过History对象的属性和方法实现前进后退的功能 Location对象:指地址栏,通过属性的方法控制页面的跳转 Document对象:指网页中的内容,通过属性和方法控制页面元素 1.Window对象的常用方法: open(); close(); alert(); prompt(); confim(); setTimeout

JavaScript实现绑定DOM的定时器插件

问题 使用原生的setTimeout和setInterval仅仅能够实现, 定时执行事件处理函数, 在网页开发中, 往往会出现一种情况,定时器用于定时更新某个页面区域的数据, 往往在页面加载之后, 就启动这个定时器, 往后则间隔执行此定时器. 页面上定时刷新的区域可能会动态消失, 特别是在ajax被广泛使用的今天, 如果定时刷新的区域被删除了, 则定时器材也需要自动清除掉. 此二个接口,如果实现这种效果需要, 自己维护定时器句柄, 并且在处理定时器事件函数的时候, 首先判断 指定的刷新区域是否还