一、DOM访问HTML元素的方式
为了动态地修改HTML元素,须先访问HTML元素。DOM主要提供了两种方式来访问HTML元素:
1.根据ID访问HTML元素:通过document对象调用getElementById()方法来查找具有唯一id属性值的元素。
例:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>使用getElementById方法查找元素</title>
<script type="text/javascript">
function showContent(){
var myDiv,txtName,content;
with(document){
myDiv=getElementById("myDiv");
txtName=getElementById("txtName");
content=getElementById("content");
为了动态地修改HTML元素,须先访问HTML元素。DOM主要提供了两种方式来访问HTML元素:
1.根据ID访问HTML元素:通过document对象调用getElementById()方法来查找具有唯一id属性值的元素。
例:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>使用getElementById方法查找元素</title>
<script type="text/javascript">
function showContent(){
var myDiv,txtName,content;
with(document){
myDiv=getElementById("myDiv");
txtName=getElementById("txtName");
content=getElementById("content");
}
alert(myDiv.innerHTML+" "+txtName.value+" "+content.value);
}
</script>
</head>
alert(myDiv.innerHTML+" "+txtName.value+" "+content.value);
}
</script>
</head>
<body>
<div id="myDiv">我的div块</div>
<textarea id="content" cols="30" rows="10">好好学习,天天向上</textarea>
<input type="text" id="txtName" value="按我呀"><br>
<input type="button" id="btn_show" value="访问三个元素的内容" onClick="showContent()">
</body>
</html>
2.利用节点关系访问HTML元素。常用的属性和方法如下:
parentNode 返回当前节点的父节点
previousSibling 返回当前节点的前一个兄弟节点
nextSibling 返回当前节点的后一个兄弟节点
childNodes 返回当前节点的所有子节点
firstChild 返回当前节点的第一个子节点
lastChild 返回当前节点的最后一个子节点
getElementsByTagName(tagName) 返回当前节点的具有指定标签名的所有子节点
例:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>使用节点关系查找HTML元素</title>
<style type="text/css">
/*以赵六为参照物*/
#n4{color:red}
</style>
</head>
<div id="myDiv">我的div块</div>
<textarea id="content" cols="30" rows="10">好好学习,天天向上</textarea>
<input type="text" id="txtName" value="按我呀"><br>
<input type="button" id="btn_show" value="访问三个元素的内容" onClick="showContent()">
</body>
</html>
2.利用节点关系访问HTML元素。常用的属性和方法如下:
parentNode 返回当前节点的父节点
previousSibling 返回当前节点的前一个兄弟节点
nextSibling 返回当前节点的后一个兄弟节点
childNodes 返回当前节点的所有子节点
firstChild 返回当前节点的第一个子节点
lastChild 返回当前节点的最后一个子节点
getElementsByTagName(tagName) 返回当前节点的具有指定标签名的所有子节点
例:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>使用节点关系查找HTML元素</title>
<style type="text/css">
/*以赵六为参照物*/
#n4{color:red}
</style>
</head>
<body>
<ul id="names">
<li id="n1">张三</li>
<li id="n2">李四</li>
<li id="n3">王五</li>
<li id="n4">赵六</li>
<li id="n5">小红</li>
<li id="n6">小明</li>
</ul>
<ul id="names">
<li id="n1">张三</li>
<li id="n2">李四</li>
<li id="n3">王五</li>
<li id="n4">赵六</li>
<li id="n5">小红</li>
<li id="n6">小明</li>
</ul>
<input type="button" value="父节点" onClick="showContent(current.parentNode)">
<input type="button" value="第一个子节点" onClick="showContent(current.parentNode.firstChild.nextSibling)">
<input type="button" value="上一个节点" onClick="showContent(current.previousSibling.previousSibling)">
<input type="button" value="下一个节点" onClick="showContent(current.nextSibling.nextSibling)">
<input type="button" value="最后一个子节点" onClick="showContent(current.parentNode.lastChild.previousSibling)">
<input type="button" value="得到所有li的元素个数" onClick="showCount()">
<script type="text/javascript">
var current=document.getElementById("n4");
function showContent(target){
alert(target.innerHTML);
}
function showCount(){
alert(document.getElementsByTagName("li").length);
}
</script>
</body>
</html>
<input type="button" value="第一个子节点" onClick="showContent(current.parentNode.firstChild.nextSibling)">
<input type="button" value="上一个节点" onClick="showContent(current.previousSibling.previousSibling)">
<input type="button" value="下一个节点" onClick="showContent(current.nextSibling.nextSibling)">
<input type="button" value="最后一个子节点" onClick="showContent(current.parentNode.lastChild.previousSibling)">
<input type="button" value="得到所有li的元素个数" onClick="showCount()">
<script type="text/javascript">
var current=document.getElementById("n4");
function showContent(target){
alert(target.innerHTML);
}
function showCount(){
alert(document.getElementsByTagName("li").length);
}
</script>
</body>
</html>
注:以上两种方式是通用的方式,可以用于任何元素
二、DOM访问表单控件的常用属性和方法如下:
action 返回该表单的提交地址
elements 返回表单内全部表单控件所组成的数组,通过数组可以访问表单内的任何表单控件。
length 返回表单内表单域的个数
method 返回表单内的method属性,主要有get和post两个值
target 确定提交表单时的结果窗口,主要有_self、_blank、_top等
reset()、submit() 重置表单和确定表单方法
在elements返回的数组中访问具体的表单控件语法如下:
.elements[index] 返回该表单中第index个表单控件
.elements[elementName] 返回表单内id或name为elementName的表单控件
.elementName 返回表单内id或name为elementName的表单控件
三、DOM访问列表框、下拉菜单的常用属性如下:
form 返回列表框、下拉菜单所在的表单对象
length 返回列表框、下拉菜单的选项个数
options 返回列表框、下拉菜单里所有选项组成的数组
selectedIndex 返回下拉列表中选中选项的索引
type 返回下拉列表的类型,多选的话返回select-multiple,单选返回select-one
使用options[index]返回具体选项所对应的常用属性:
defaultSelected 返回该选项默认是否被选中
index 返回该选项在列表框、下拉菜单中的索引
selected 返回该选项是否被选中
text 返回该选项呈现的文本
value 返回该选项的value属性值
四、DOM访问表格子元素的常用属性和方法如下:
caption 返回表格的标题对象
rows 返回该表格里的所有表格行(数组)
通过rows[index]返回表格指定的行所对应的属性:
cells 返回该表格行内所有的单元格组成的数组
通过cells[index]返回表格指定的列所对应的属性:
cellIndex 返回该单元格在表格行内的索引值
五、DOM创建节点的方法:
document.createElement(Tag),Tag必须是合法的HTML元素
六、DOM复制节点的方法:
节点cloneNode(boolean deep),当deep为true时,表示复制当前节点以及当前结点的全部后代节点。
为false时,只复制当前节点。
七、DOM添加、删除节点的方法:
appendChild(newNode) 将newNode添加成当前节点的最后一个子节点
insertBefore(newNode,refNode) 将refNode节点之前插入newNode节点
replaceChild(newNode,oldNode) 将oldNode节点替换成newNode节点
removeChild(oldNode) 将oldNode子节点删除
例:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>创建元素</title>
<script type="text/javascript">
function create(){
var city=document.getElementById('city');
var element=document.createElement('li');
element.innerHTML="南京";
//创建节点
//city.appendChild(element);
//插入节点
//city.insertBefore(element,city.firstChild.nextSibling);
//替换节点
city.replaceChild(element,city.firstChild.nextSibling)
}
function copy(){
var city=document.getElementById('city');
var element=city.firstChild.nextSibling.cloneNode(true);
city.appendChild(element);
}
function del(){
var city=document.getElementById('city');
var element=city.firstChild.nextSibling;
city.removeChild(element);
}
</script>
</head>
二、DOM访问表单控件的常用属性和方法如下:
action 返回该表单的提交地址
elements 返回表单内全部表单控件所组成的数组,通过数组可以访问表单内的任何表单控件。
length 返回表单内表单域的个数
method 返回表单内的method属性,主要有get和post两个值
target 确定提交表单时的结果窗口,主要有_self、_blank、_top等
reset()、submit() 重置表单和确定表单方法
在elements返回的数组中访问具体的表单控件语法如下:
.elements[index] 返回该表单中第index个表单控件
.elements[elementName] 返回表单内id或name为elementName的表单控件
.elementName 返回表单内id或name为elementName的表单控件
三、DOM访问列表框、下拉菜单的常用属性如下:
form 返回列表框、下拉菜单所在的表单对象
length 返回列表框、下拉菜单的选项个数
options 返回列表框、下拉菜单里所有选项组成的数组
selectedIndex 返回下拉列表中选中选项的索引
type 返回下拉列表的类型,多选的话返回select-multiple,单选返回select-one
使用options[index]返回具体选项所对应的常用属性:
defaultSelected 返回该选项默认是否被选中
index 返回该选项在列表框、下拉菜单中的索引
selected 返回该选项是否被选中
text 返回该选项呈现的文本
value 返回该选项的value属性值
四、DOM访问表格子元素的常用属性和方法如下:
caption 返回表格的标题对象
rows 返回该表格里的所有表格行(数组)
通过rows[index]返回表格指定的行所对应的属性:
cells 返回该表格行内所有的单元格组成的数组
通过cells[index]返回表格指定的列所对应的属性:
cellIndex 返回该单元格在表格行内的索引值
五、DOM创建节点的方法:
document.createElement(Tag),Tag必须是合法的HTML元素
六、DOM复制节点的方法:
节点cloneNode(boolean deep),当deep为true时,表示复制当前节点以及当前结点的全部后代节点。
为false时,只复制当前节点。
七、DOM添加、删除节点的方法:
appendChild(newNode) 将newNode添加成当前节点的最后一个子节点
insertBefore(newNode,refNode) 将refNode节点之前插入newNode节点
replaceChild(newNode,oldNode) 将oldNode节点替换成newNode节点
removeChild(oldNode) 将oldNode子节点删除
例:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>创建元素</title>
<script type="text/javascript">
function create(){
var city=document.getElementById('city');
var element=document.createElement('li');
element.innerHTML="南京";
//创建节点
//city.appendChild(element);
//插入节点
//city.insertBefore(element,city.firstChild.nextSibling);
//替换节点
city.replaceChild(element,city.firstChild.nextSibling)
}
function copy(){
var city=document.getElementById('city');
var element=city.firstChild.nextSibling.cloneNode(true);
city.appendChild(element);
}
function del(){
var city=document.getElementById('city');
var element=city.firstChild.nextSibling;
city.removeChild(element);
}
</script>
</head>
<body>
<ul id="city">
<li>北京</li>
<li>上海</li>
</ul>
<input type="button" value="创建插入替换节点" onClick="create()">
<input type="button" value="复制节点" onClick="copy()">
<input type="button" value="删除节点" onClick="del()">
</body>
</html>
注:五、六、七为通用的增删改操作
八、DOM为下拉菜单(select)添加选项的方式:
1.创建选项除了使用前面所示的createElement方法之外,还可以使用专门的构造器来构造一个选项出来(IE、谷歌都支持)。语法如下:
new Option(text,value,defaultSelected,selected)
该构造器有4个参数,说明如下:
text 该选项的文本、即该选项所呈现的“内容”
value 选中该选项的值
defaultSelected 设置默认是否显示该选项
selected 设置该选项当前是否被选中
提示:并不是每次构造都需指明4个参数,可以指明一个或者两个都可以,假如一个的话指明的是text,假如二个的话,第一个参数是text,第二个参数是value。
添加创建好的选项至列表框或下拉菜单的方式:
直接为<select>的的指定选项赋值
列表框或下拉菜单对象.options[i]=创建好的option对象
删除列表框、下拉菜单的选项的方法:
1.直接使用列表框或下拉菜单对象.remove(index)方法删除指定选项
2.直接将指定选项赋值为null
列表框或下拉菜单对象.remove(index)或对象.options[index]=null
九、DOM动态添加删除表格内容所使用到的常用方法:
insertRow(index) 在指定索引位置插入一行
createCaption() 为该表格创建标题
deleteRow(index) 删除表格中index索引处的行
deleteCaption() 删除表格标题
给表格行创建、删除单元格的方法:
insertCell(index) 在index处创建一个单元格,返回新创建的单元格
deleteCell(index) 删除某行在index索引处的单元格
<ul id="city">
<li>北京</li>
<li>上海</li>
</ul>
<input type="button" value="创建插入替换节点" onClick="create()">
<input type="button" value="复制节点" onClick="copy()">
<input type="button" value="删除节点" onClick="del()">
</body>
</html>
注:五、六、七为通用的增删改操作
八、DOM为下拉菜单(select)添加选项的方式:
1.创建选项除了使用前面所示的createElement方法之外,还可以使用专门的构造器来构造一个选项出来(IE、谷歌都支持)。语法如下:
new Option(text,value,defaultSelected,selected)
该构造器有4个参数,说明如下:
text 该选项的文本、即该选项所呈现的“内容”
value 选中该选项的值
defaultSelected 设置默认是否显示该选项
selected 设置该选项当前是否被选中
提示:并不是每次构造都需指明4个参数,可以指明一个或者两个都可以,假如一个的话指明的是text,假如二个的话,第一个参数是text,第二个参数是value。
添加创建好的选项至列表框或下拉菜单的方式:
直接为<select>的的指定选项赋值
列表框或下拉菜单对象.options[i]=创建好的option对象
删除列表框、下拉菜单的选项的方法:
1.直接使用列表框或下拉菜单对象.remove(index)方法删除指定选项
2.直接将指定选项赋值为null
列表框或下拉菜单对象.remove(index)或对象.options[index]=null
九、DOM动态添加删除表格内容所使用到的常用方法:
insertRow(index) 在指定索引位置插入一行
createCaption() 为该表格创建标题
deleteRow(index) 删除表格中index索引处的行
deleteCaption() 删除表格标题
给表格行创建、删除单元格的方法:
insertCell(index) 在index处创建一个单元格,返回新创建的单元格
deleteCell(index) 删除某行在index索引处的单元格