<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
1.获取元素节点
1)直接获取
【1】document.getElementById()
【2】document.getElementByName()
【3】document.getElementByTagName()
*/
function getEle(){
var obj = document.getElementById("sec");
console.log(typeof obj);
console.log(obj);
}
window.setInterval(getEles,1000);
function getEles(){
var sec = document.getElementById("sec").innerHTML;
var number = parseInt(sec);
document.getElementById("sec").innerHTML = --number;
if(sec==0){
window.close();
}
}
function getEle2(){
//获取的是一个数组
var obj = document.getElementsByName("fav");
console.log(obj)
}
function getEle3(){
var obj = document.getElementsByTagName("input");
console.log(obj);
}
/*
2)间接获取
父子关系
childNodes firstChild lastChild
子父关系
parentNode
兄弟关系
nextSibling previousSibling
*/
function getEle4(){
var father = document.getElementById("regForm");
var sons = father.childNodes;
console.log(sons[1]);
}
function getEle5(){
var sons = document.getElementById("userid");
console.log(sons.parentNode);
}
function getEle6(){
var bro = document.getElementById("userid");
console.log(bro.nextSibling.nextSibling);
console.log(bro.previousSibling);
}
/*
* 2.操作属性节点
*1)通过对象“.”属性
* 优点:可以动态获取用户修改的属性值
* 缺点:不能获取自定义属性的值
* 2)getAttribute setAttribute removeAttribute
* 优点:可以获取自定义属性的值
* 缺点:不能动态获取用户修改的属性值
* */
function getField1(){
var obj = document.getElementById("nickid");
console.log(obj.type);
// obj.type = "password";
var objval = obj.getAttribute("abcd");
var objval2 = obj.setAttribute("abcd",5678);
}
/*
* 3.处理文本节点
*1)通过对象.innerText获取标签内部的文本信息
* 2)通过对象.innerHTML获取标签内部的HTML代码
* */
function getText1(){
var myDiv = document.getElementById("myDiv")
console.log(myDiv.innerText);
}
function getText2(){
var myDiv = document.getElementById("myDiv")
console.log(myDiv.innerHTML);
}
function getText3(){
var myDiv = document.getElementById("myDiv")
myDiv.innerText = "<img src='1.jpg'/>";
}
function getText4(){
var myDiv = document.getElementById("myDiv")
myDiv.innerHTML = "<img src='webp.jpg' height='200px' width='200px'/>";
}
</script>
</head>
<body>
<button onclick="getEle()">点我测试!</button>
<button onclick="getEle2()">点我测试2!</button>
<button onclick="getEle3()">点我测试3!</button>
<button onclick="getEle4()">点我测试4!</button>
<button onclick="getEle5()">点我测试5!</button>
<button onclick="getEle6()">点我测试6!</button>
<hr/>
<button onclick="getField1()">属性测试1!</button>
<hr/>
<button onclick="getText1()">文本测试1!</button>
<button onclick="getText2()">文本测试2!</button>
<button onclick="getText3()">文本测试3!</button>
<button onclick="getText4()">文本测试4!</button>
<form id="regForm">
用户名:<input id="userid" type="text" name="username"/><br/>
密码:<input type="password" name="password"><br/>
昵称:<input id="nickid" type="text" name="nickname" abcd="1234"><br/>
性别:男<input type="radio" name="gender" value="nan">
女<input type="radio" name="gender" value="nv"><br/>
爱好:狗<input type="checkbox" name="fav" value="dog">
猫<input type="checkbox" name="fav" value="cat"><br/>
<input type="submit" value="注册">;
</form>
页面将在<span id="sec">1000</span>s后关闭
<p id="myDiv">hello</p>
</body>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script type="application/javascript">
/*
4.动态改变DOM结构
1)创建一个节点对象
document.createElement("标签名")
2)(父节点)追加子节点对象
fatherNode.appendChild("子节点对象")
3)(父节点)在指定节点前添加子节点
fatherNode.insertBefore(新节点对象参考节点对象)
4)(父节点)替换旧的子节点对象
fatherNode.replaceChild(新节点对象,旧节点对象)
5)(父节点)删除旧的子节点对象
fatherNode.removeChild(旧节点对象)
.
* */
function changeDom1(){
var ipt = document.createElement("input");
ipt.type = "text";
}
function changeDom2(){
var father = document.getElementById("regForm");
var ipt = document.createElement("input");
ipt.type = "text";
father.appendChild(ipt);
}
function changeDom3(){
var father = document.getElementById("regForm");
//参考节点
var refNode = document.getElementById("brid");
var ipt = document.createElement("input");
ipt.type = "text";
father.insertBefore(ipt,refNode);
}
function changeDom4(){
var father = document.getElementById("regForm");
//参考节点
var refNode = document.getElementById("brid");
var ipt = document.createElement("input");
ipt.type = "text";
father.replaceChild(ipt,refNode);
}
function changeDom5(){
var father = document.getElementById("regForm");
var refChild = document.getElementById("nickid");
father.removeChild(refChild);
}
</script>
</head>
<body>
<button onclick="changeDom1()"> 创建节点</button>
<button onclick="changeDom2()"> 追加子节点对象</button>
<button onclick="changeDom3()"> 插入子节点对象</button>
<button onclick="changeDom4()"> 替换子节点对象</button>
<button onclick="changeDom5()"> 删除子节点对象</button>
<hr/>
<form id="regForm">
用户名:<input id="userid" type="text" name="username"/><br/>
密码:<input type="password" name="password"><br id="brid"/>
昵称:<input id="nickid" type="text" name="nickname" abcd="1234"><br/>
性别:男<input type="radio" name="gender" value="nan">
女<input type="radio" name="gender" value="nv"><br/>
爱好:狗<input type="checkbox" name="fav" value="dog">
猫<input type="checkbox" name="fav" value="cat"><br/>
<input type="submit" value="注册">
</form>
<hr/>
<table id="tableid" border="1" style="border-collapse: collapse">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>操作</td>
</tr>
<tr>
<td>张三</td>
<td>18</td>
<td>男</td>
<td><a href="javascript:void(0)" onclick="deleteRow(this),confirmDemo()">删除</a> </td>
</tr>
<tr>
<td>李四</td>
<td>19</td>
<td>男</td>
<td><a href="javascript:void(0)" onclick="deleteRow(this),confirmDemo()">删除</a> </td>
</tr>
</table>
<script type="application/javascript">
function deleteRow(item){
var delNode = item.parentNode.parentNode;
var father = delNode.parentNode;
father.removeChild(delNode);
}
function confirmDemo(){
confirmDemo("是否确定删除");
}
</script>
</body>
</html>
</html>