一DOM简介
HTML DOM 树
![DOM HTML tree](https://i-blog.csdnimg.cn/blog_migrate/6960d0bf34c06fdfa5aefb6bf2d4f58c.gif)
nodeName | String | 节点的名字;根据节点的类型而定义 |
nodeValue | String | 节点的值;根据节点的类型而定义 |
nodeType | Number | 节点的类型常量值之一 |
ownerDocument | Document | 指向这个节点所属的文档 |
firstChild | Node | 指向在childNodes列表中的第一个节点 |
lastChild | Node | 指向在childNodes列表中的最后一个节点 |
childNodes | NodeList | 所有子节点的列表 |
previousSibling | Node | 指向前一个兄弟节点;如果这个节点就是第一个兄弟节 点,那么该值为null |
nextSibling | Node | 指向后一个兄弟节点;如果这个节点就是最后一个兄弟节 点,那么该值为null |
hasChildNodes() | Boolean | 当childNodes包含一个或多个节点时,返回真 |
attributes | NamedNodeMap | 包含了代表一个元素的特性的Attr对象;仅用于Element 节点 |
appendChild(node) | Node | 将node添加到childNodes的末尾 |
removeChild(node) | Node | 从childNodes中删除node |
replaceChild (newnode, oldnode) | Node | 将childNodes中的oldnode替换成newnode |
insertBefore (newnode, refnode) | Node | 在childNodes中的refnode之前插入newnode |
二.查找操作Dom节点
<input type=“text” value=“新中国成立60周年" id="tid">
function test(){
var usernameElement=document.getElementById(“tid");
//获取元素的值
alert("usernameElement.value: "+usernameElement.value)
//获取元素的类型
alert("usernameElement.type: "+usernameElement.type)
}
<form name="form1">
<input type="text" name="tname" value="国庆60年_1" /><br>
<input type="text" name="tname" value="国庆60年_2" /><br>
<input type="text" name="tname" value="国庆60年_3" /><br>
<input type="button" name="ok" value="保存" id="ok" οnclick="test();">
</form>
function test(){
var tnameArray=document.getElementsByName("tname");
alert(tnameArray.length);
for(var i=0;i<tnameArray.length;i++){
window.alert(tnameArray[i].value);
}
}
// //处理input
// var inputElements=document.getElementsByTagName("input");
// //输出input标签的长度
// //alert(inputElements.length);
// for(var i=0;i<inputElements.length;i++){
// if(inputElements[i].type!='button'){//submit
// alert(inputElements[i].value);
// }
// }
//处理select
// //获取select标签
// var selectElements=document.getElementsByTagName("select");
// //获取select下的子标签
// for(var j=0;j<selectElements.length;j++){
// var optionElements=selectElements[j].getElementsByTagName("option");
// for(var i=0;i<optionElements.length;i++){
// alert(optionElements[i].value);
// }
// }
处理文本域textarea
var textareaElements=document.getElementsByTagName("textarea");
alert(textareaElements[0].value);
<script type="text/javascript">
window.οnlοad=function(){
var selectElements=document.getElementsByTagName("select");
alert(selectElements[0].hasChildNodes())
}
</script>
三.Dom的属性
<h1 id="h1">明天休息</h1>
<input type="text" id="input" value="明天放假"/>
<script type="text/javascript">
var h1=document.getElementById("h1");
alert(h1.childNodes[0].nodeValue);//弹出明天休息
var i=document.getElementById("input");
alert(i.value);//弹出明天放假
</script>
四.替换节点
<ul id=city>
<li id="bj">北京</li>
<li id="sh">上海</li>
</ul>
<ul id="game">
<li id="lol">lol</li>
<li id="fk">反恐精英</li>
</ul>
<script type="text/javascript">
var city=document.getElementById("city");
var game=document.getElementById("game");
city.οnclick=function(){
var bj=document.getElementById("bj");
var fk=document.getElementById("fk");
var reference = city.replaceChild(fk,bj);
game.appendChild(bj);
}
</script>
五.属性节点
1.获取属性节点
<li name="beijing" id="bj">北京</li>
<script type="text/javascript">
var bj=document.getElementById("bj");
alert(bj.getAttribute("name"));
</script>
2.设置属性节点
<li id="bj">北京</li>
<script type="text/javascript">
var bj=document.getElementById("bj");
bj.setAttribute("name","北京")
alert(bj.getAttribute("name"));
</script>
六.创建节点
按照给定的标签名创建一个新的元素节点。方法只有一个参数:将被创建的元素的名字,是一个字符串.
var reference = document.createElement(element);
方法的返回值:是一个指向新建节点的引用指针。返回值是一个元素节点,所以它的 nodeType 属性值等于 1。
新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性,它只是一个存在于 JavaScript 上下文的对象.
var pElement = document.createElement("p");
<p id="love">nihao</p>
<script type="text/javascript">
var pElement=document.createElement("li");//创建li元素
//设置属性值
pElement.setAttribute("id","pid");
//获取父元素
var loveElement=document.getElementById("love");
//在父元素中增加子元素
loveElement.appendChild(pElement);
//通过id获取刚创建的元素
var pidElement=document.getElementById("pid");
alert(pidElement.getAttribute("id"));
</script>
创建新文本节点
<p id="love"></p>
<script type="text/javascript">
//获取父元素
var loveElement=document.getElementById("love");
//在父元素中增加子元素
var text=document.createTextNode("上海");
loveElement.appendChild(text);
<select name="edu" id="edu">
<option value="博士">博士^^^^^</option>
<option value="硕士">硕士^^^^^</option>
<option value="本科" selected="selected">本科^^^^^</option>
<option value="高中">高中^^^^^</option>
</select>
<script type="text/javascript">
var edu=document.getElementById("edu");//获取父节点
var option=document.createElement("option")//创建子节点
edu.appendChild(option);//将option节点追加到select下
var text=document.createTextNode("大专");//创建文本节点
option.appendChild(text);//将文本节点追加到option下
alert(text.nodeValue);
</script>
七.插入节点
八.删除节点
<ul id="city"> <li value="beijing^" id="beijing">北京</li> </ul>
var ulElement=document.getElementById("city");
var liElement=document.getElementById("beijing");
ulElement.removeChild(liElement);
如果想删除某个节点,但不知道它的父节点是哪一个,parentNode 属性可以帮忙。<ul id="city"> <li value="beijing^" id="beijing">北京</li> </ul>
<ul id="city01"><li value="shanghai^" id="shanghai">上海</li> </ul>
<script type="text/javascript">
//获取父节点
var childNode=document.getElementById("beijing");
var parentCityNode=childNode.parentNode;
parentCityNode.removeChild(childNode);
</script>
九.经典案例
<body>
您的爱好很广泛!!!
<br>
<input type="checkbox" id="checkItems" value="1" />全选/全不选
<br>
<input type="checkbox" name="items" value="足球" />足球
<input type="checkbox" name="items" value="篮球" />篮球
<input type="checkbox" name="items" value="游泳" />游泳
<input type="checkbox" name="items" value="唱歌" />唱歌
<br>
<input type="button" name="checkall" id="checkall1" value="全选" />
<input type="button" name="checkall" id="checknotall" value="全不选" />
<input type="button" name="checkall" id="checkreverse" value="反选" />
</body>
<script type="text/javascript">
window.οnlοad=function(){
var items=document.getElementsByName("items");
document.getElementById("checkall1").οnclick=function(){
for (var i = 0; i < items.length; i++) {
items[i].checked=true;
}
}//全选
document.getElementById("checknotall").οnclick=function(){
for (var i = 0; i < items.length; i++) {
items[i].checked=false;
}
}//全不选
document.getElementById("checkreverse").οnclick=function(){
for (var i = 0; i < items.length; i++) {
items[i].checked=!items[i].checked;
}//反选
}
document.getElementById("checkItems").οnclick=function(){
if (checkItems.checked) {
for(var i=0;i<items.length;i++){
items[i].checked=true;
}
}else {
for(var i=0;i<items.length;i++){
items[i].checked=false;
}//全选/全不选
}
}
}
</script>
<div style="float: left;margin-right: 10px">
<select id="first" size="10" multiple="multiple" οndblclick="">
<option value="选项1">选项1</option>
<option value="选项2">选项2</option>
<option value="选项3">选项3</option>
<option value="选项4">选项4</option>
<option value="选项5">选项5</option>
<option value="选项6">选项6</option>
<option value="选项7">选项7</option>
<option value="选项8">选项8</option>
</select>
</div>
<div style="float: left;margin-right: 10px">
<input id="leftone" type="button" value="------>"/><br><br>
<input id="leftAll" type="button" value="====>"/><br><br>
<input id="rightone" type="button" value="<------"/><br><br>
<input id="rightAll" type="button" value="<===="/><br>
</div>
<select id="second" size="10" multiple="multiple">
<option value="选项9">选项9</option>
</select>
<script type="text/javascript">
var leftAll=document.getElementById("leftAll");
var first=document.getElementById("first");
var second=document.getElementById("second");
var rightAll=document.getElementById("rightAll");
leftAll.οnclick=function (){
var option=first.childNodes;//获取第一个下拉框的id的子元素也就是option
var len=option.length;//获取他的初始长度,不能放在循环里
for(var i=0;i<len;i++){
second.appendChild(option[0]);//依次循环添加
}
}
rightAll.οnclick=function(){
var option=second.childNodes;
var len=option.length;
for(var i=0;i<len;i++){
first.appendChild(option[0]);
}
}
var leftone=document.getElementById("leftone");
leftone.οnclick=function (){
var option=first.childNodes;
var len=option.length;
for (var i = 0; i <len; i++) {
if (option[i].selected) {
second.appendChild(option[i]);
}
}
}
var rightone=document.getElementById("rightone");
rightone.οnclick=function(){
var option=second.childNodes;
var len=option.length;
for (var i = 0; i <len; i++) {
if (option[i].selected) {
first.appendChild(option[i]);
}
}
}
</script>