Dom笔记(三)

1. 添加和删除元素:
添加元素: 3步:
1. 创建空元素:
var elem=document.createElement("标签名")
比如:
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>
页面加载过程:
读html,构建DOM Tree

RenderTree→layout→paint

读CSS,构建cssRule

3.将新元素添加到指定父元素下:
parent.appendChild(child);
将child追加到parent的子元素末尾
parent.insertBefore(child,oldChild);
将child插入到oldChild之前
parent.replaceChild(child,oldChild);
用child替换parent下的oldChild
原则: 尽量减少layout的次数,其实就是减少appendChild的使用次数。
如果同时添加父元素和子元素时:
先创建父元素,将子元素添加到父元素
最后将父元素整体添加到页面
如果父元素已经在页面上,需要同时添加多个同级子元素时:
文档片段: 内存中,临时存储多个子节点的虚拟父节点。
为什么: 反复向页面添加多个子节点会导致反复layout,减低效率。
何时使用: 只要添加多个平级子节点时,都要先将子节点放在文档片段中,再将文档片段整体挂到页面上。
如何使用: 3步:
1. 创建空文档片段:
var frag=
document.createDocumentFragment();
2. 将多个子元素添加到文档片段下
frag.appendChild(child);
3. 将片段整体添加到页面上:
片段不会成为页面上的元素
添加后,自动释放。

补: select
事件: onchange:当选中项发生改变时
属性:
select.selectedIndex 选中项下标
select.value:
如果option有value,就返回value
如果option没有value,就返回文本

删除元素: parent.removeChild(child);
child.parentNode.removeChild(child);

1. Image: 指页面上一个img元素

创建: var img=new Image();
document.createElement("img")
强调: 只有极个别元素可以new

2. Select: 指一个select元素
事件: onchange
属性:
select.selectedIndex
select.value
select.options 获得select下所有option
select.options.length 获取或设置选项的个数
可简写为: select.length
方法:
select.add(opt)
.appendChild(opt);
将opt追加到select元素下
select.remove(i)
移除select中i位置的opt

Option对象: 指select下一个option元素
创建: var opt=new Option(text,value);
相当于:
var opt=
document.createElement("option");
opt.innerHTML=text;
opt.value=value;
属性: opt.text

简写:创建一个新option,同时添加到select
sel.add(new Option(text,value));

3. Table: 指代一个table元素
行分组:
tHead var thead=table.createTHead()
table.deleteTHead()
table.tHead
tBodies->tBody
var tbody=table.createTBody();
table.tBodis[i]
tFoot var tfoot=table.createTFoot()
table.deleteTFoot()
table.tFoot

行:
行分组.rows
var tr=行分组.insertRow(i);
如果省略i,表示末尾追加一行
行分组.deleteRow(i);
如果省略i,表示删除第一行
i都是相对于当前行分组内的下标位置

格:
行.cells
var td=行.insertCell(i);
强调: 只能创建td元素
行.deleteCell(i);

table->tr
table.rows
var tr=table.insertRow(i);
table.deleteRow(i);
i是相对于整个table的下标位置

tr.rowIndex属性: 标识当前tr在整个表中的行下标
所以,如果删除rowIndex标识的行,必须用table。

对话框:
输入框:prompt
警告框:alert
确认框:confirm
var bool=confirm("确认消息");
点确认,返回true;否则返回false

4.Form指代页面上一个表单元素:
获取表单:
var form=document.forms[i/id/name];
属性:form.length 统计表单元素的个数
方法: form.submit() //手动提交
获取表单中的元素:
var elem=form.elements[i/id/name]
方法: elem.focus();
elem.blur();
强调: elements集合仅包含表单元素
简写: form.id/name

时间: 2024-08-06 10:35:19

Dom笔记(三)的相关文章

DOM笔记(三):Element接口和HTMLElement接口

一.Element接口 Element接口表示一个元素,该接口扩展自Node接口,自然继承了Node接口的属性和方法,也有一套针对元素的属性和方法. Element接口常见的属性比较少,常用的就是一个只读的tagName属性,该属性返回元素名,数据类型是DOMString. Element接口定义的方法也主要是针对属性操作,常见方法如下: 方法名 数据类型 说明 getAttribute DOMString 返回对应属性 getAttributeNode Attr 返回对应属性节点 getAtt

DOM笔记(十):JavaScript正則表達式

一.RegExp ECMAScript通过RegExp类型类支持正則表達式,语法和Perl类似: var exp = /pattern/flags; patternb部分是不论什么简单的或复杂的正則表達式:flags是每一个正則表達式所带的一个或者多个标志. 正則表達式的模式匹配支持三个标志: g:全局模式,即模式应用于整个字符串.而非在发现第一个匹配项时马上停止 i:不区分大写和小写模式 m:多行模式,即到达一行文本末尾是还会继续茶查找下一行中是否存在与模式匹配的项. 1.创建正則表達式 Ja

JavaScript--基于对象的脚本语言学习笔记(三)

事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript"> String.prototype.trim=function(){ r

DOM笔记(四):HTML 5 DOM复杂数据类型

HTML 5 DOM定义了一下集合.列表等复杂的数据类型用于实现便捷的操作.相对于HTML 4 DOM,HTML 5 DOM增加了HTMLCollection.DOMTokenList.DOMStringMap.HTMLAllCollection. HTMLFormControlsCollection等. 一.HTMLCollection.HTMLAllCollection和HTMLFormControlsCollection 三个接口均用于表示一组元素组成的列表.HTMLAllCollecti

DOM笔记(十二):又谈原型对象

因为之前谢过一篇关于原型对象的笔记:浅谈JavaScript中的原型模式.现在我又重新看到这个话题,对原型有了进一步的理解,所以,又要谈谈原型对象. 一.理解原型对象 创建的每一个函数都有一个prototype属性,它指向这个函数的原型对象.利用原型模式创建的方法和属性是被所有实例所共享的. function Person(){} Person.prototype.name="dwqs"; Person.prototype.age=20; Person.prototype.sayNam

DOM笔记(十):JavaScript正则表达式

一.RegExp ECMAScript通过RegExp类型类支持正则表达式,语法和Perl类似: var exp = /pattern/flags; patternb部分是任何简单的或复杂的正则表达式:flags是每个正则表达式所带的一个或者多个标志. 正则表达式的模式匹配支持三个标志: g:全局模式,即模式应用于整个字符串,而非在发现第一个匹配项时立即停止 i:不区分大小写模式 m:多行模式,即到达一行文本末尾是还会继续茶查找下一行中是否存在与模式匹配的项. 1.创建正则表达式 JavaScr

angular学习笔记(三十)-指令(5)-link

这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数:scope,iEle,iAttrs,ctrl,linker scope:指令所在的作用域,这个scope和指令定义的scope是一致的.至于指令的scope,会在讲解scope属性的时候详细解释 iEle:指令元素的jqLite封装.(也就是说iEle可以调用angular封装的简版jq的方法和属

DOM笔记(十三):JavaScript的继承方式

在Java.C++.C#等OO语言中,都支持两种继承方式:接口继承和实现继承.接口继承制继承方法签名,实现继承则继承实际的方法和属性.在SCMAScript中,由于函数没有签名,所以无法实现接口继承,只支持实现继承. 实现继承主要依靠原型链来实现. 一.原型链 原型链是利用原型让一个引用类型继承另一个引用类型的方法,在DOM笔记(十二):又谈原型对象中,描述了构造函数.实例和原型之间的关系: 每个构造函数都有一个原型对象,原型对象包含一个指向构造函数的指针,而每个实例都包含一个指向原型对象的内部

Ajax学习笔记(三)

三.jQuery库详解 1.使用jQuery之后,javascript操作的不再是HTML元素对应的DOM对象,而是包装DOM对象的jQuery对象.js通过调用jQuery对象的方法来改变它所包装的DOM对象的属性,从而实现动态更新HTML页面. 由此可见,使用jQuery动态更新HTML页面只需以下两个步骤: (1)获取jQuery对象.jQuery对象通常是DOM对象的包装 (2)调用jQuery对象的方法来改变自身.当jQuery对象被改变时,jQuery包装的DOM对象随之改变,HTM

DOM笔记(二):Node接口

所有的节点都使用Node接口来表示,可以使用很多方法去获取节点,如document.getElementsByTagName().document.getElementsByName()等均返回一个NodeList对象,然后获取其中的节点. 节点对应的属性和放大均在Node接口予以定义: 1.Node接口常见的属性列表 属性名 数据类型 说明 nodeName DOMString 返回节点名 nodeValue DOMString 返回节点值 nodeType int 返回节点类型(见后文) p