重要知识点:
getElememtsByTagName()可以根据标签名字获取一组元素节点对象
-即使查询到的数组元素 只有一个,也会返回一个数组
innerHTML识别不了自结束标签的文本内容
采取读属性值的方式,要哪个读哪个 元素.属性名(class属性不能这样读)
元素.className 可以读class属性
childNodes属性会获取包括文本节点在的所有节点,(DOM标签空白也会被当成文本节点)
children属性可以获取当前元素的所有子元素
var fir=phone.firstElementChild;可以获取到第一个子节点,包括空白文本节点
但不建议使用,有的浏览器不兼容
练习及代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" type="text/css" href="./css/Domlianxi.css"/>
<script type="text/javascript">
/* DOM查询练习 */
window.onload=function(){
//1、查找#bj节点
var btn01=document.getElementById("btn01");//获取btn01对象
btn01.onclick=function(){//为id为btn01的按钮绑定一个单击响应函数
//查找#bj节点
var bj=document.getElementById("bj");
//打印bj,innerHTML:通过这个获取元素内部的HTMML代码
alert(bj.innerHTML);
};
//查找所有li节点
var btn02=document.getElementById("btn02");
btn02.onclick=function(){
//getElememtsByTagName()可以根据标签名字获取一组元素节点对象
//即使查询到的数组元素 只有一个,也会返回一个数组
var lis=document.getElementsByTagName("li");
for(var i=0;i<lis.length;i++){
alert(lis[i].innerHTML);
}
}
//查找name=gender的所有节点
var btn03=document.getElementById("btn03");
btn03.onclick=function(){
var inputs=document.getElementsByName("gender");
for(var i=0;i<inputs.length ;i++){
//innerHTML识别不了自结束标签的文本内容
//采取读5属性值的方式,要哪个读哪个 元素.属性名(class属性不能这样读)
//元素.className 可以读class属性
alert(inputs[i].value);
}
};
//查找#city下所有li节点
var btn04=document.getElementById("btn04");
btn04.onclick=function(){
//获取所有id为city的元素
var city=document.getElementById("city") ;
//查找city下所有的li节点
var lis=city.getElementsByTagName("li");
for(var i=0;i<lis.length;i++){
alert(lis[i].innerHTML);
}
};
//返回#city的所有子节点
var btn05=document.getElementById("btn05");
btn05.onclick=function(){
var city=document.getElementById("city");
/*
childNodes属性会获取包括文本节点在的所有节点,(DOM标签空白也会被当成文本节点)
children属性可以获取当前元素的所有子元素
*/
var cns=city.children;
alert(cns.length);
};
//返回#phone的第一个子节点
var btn06=document.getElementById("btn06");
btn06.onclick=function(){
var phone=document.getElementById("phone");
/*
var fir=phone.firstElementChild;可以获取到第一个子节点,包括空白文本节点
但不建议使用,有的浏览器不兼容
*/
var fir=phone.firstElementChild;
alert(fir.innerHTML);
};
//返回#bj的父节点
var btn07=document.getElementById("btn07");
btn07.onclick=function(){
var bj=document.getElementById("bj");
//获取父节点
var pn=bj.parentNode;
alert(pn.innerText);
};
//返回#Android的前一个兄弟节点
var btn08=document.getElementById("btn08");
btn08.onclick=function(){
var and=document.getElementById("android");
//返回前一个兄弟节点 var ps=and.previousSibling;可能获取到空白文本
// var pq=and.previousElementSibling获取前一个兄弟元素,有点不支持
var ps=and.previousSibling;
alert(ps);
};
//返回#username的value属性值
var btn09=document.getElementById("btn09");
btn09.onclick=function(){
var username=document.getElementById("username");
//获取属性值
alert(username.value);
};
//设置#username的value属性值
var btn10=document.getElementById("btn10");
btn10.onclick=function(){
var username=document.getElementById("username");
//获取属性值
username.value="嘿嘿";
alert(username.value);
};
//返回#bj的文本值
var btn11=document.getElementById("btn11");
btn11.onclick=function(){
var bj=document.getElementById("bj");
//返回文本值
alert(bj.innerHTML);
};
};
</script>
</head>
<body>
<div class="b1">
<div class="box1">
<p>你喜欢哪个城市?</p>
<ul id='city'>
<li class="box3" id="bj">北京</li>
<li class="box3">上海</li>
<li class="box3">东京</li>
<li class="box3">首尔</li>
</ul>
<br /><br />
<p>你喜欢哪款单机游戏?</p>
<ul id='game'>
<li id="dw " class="box3">第五人格</li>
<li class="box3">王者</li>
<li class="box3">吃鸡</li>
<li class="box3">蛋仔</li>
</ul><br /><br />
<p>你手机的操作系统是?</p>
<ul id='phone'>
<li id="ios" class="box3">IOS</li>
<li class="box4" id="android">Android</li>
<li class="box4">Windows</li>
</ul>
</div>
<div class="box2">
<form>
<p>gender:
<label><input checked="checked" type="radio" name="gender" value="Male">Male</label>
<label><input type="radio" name="gender" value="FeMale">FeMale</label>
</p>
</form>
<p>name : <input type="text" id="username" value="转晴喵"></p>
</div></div>
<div class="b1_1" id="btnList">
<div><button id="btn01">查找#bj节点</button></div>
<div><button id="btn02">查找所有li节点</button></div>
<div><button id="btn03">查找name=gender的所有节点</button></div>
<div><button id="btn04">查找#city下所有li节点</button></div>
<div><button id="btn05">返回#city的所有子节点</button></div>
<div><button id="btn06">返回#phone的第一个子节点</button></div>
<div><button id="btn07">返回#bj的父节点</button></div>
<div><button id="btn08">返回#Android的前一个兄弟节点</button></div>
<div><button id="btn09">返回#username的value属性值</button></div>
<div><button id="btn10">设置#username的value属性值</button></div>
<div><button id="btn11">返回#bj的文本值</button></div>
</div>
</body>
</html>
CSS样式代码:
.b1{
width: 500px;
height:600px ;
float: left;
}
.b1_1{
width: 400px;
float: left;
margin: 10px;
padding: 5px;
}
.box1{
width: 400px;
height: 300px;
border: black solid 3px;
margin: 10px;
padding: 5px;
}
.box2{
width: 400px;
height: 100px;
border: #000000 solid 3px;
padding: 5px;
margin: 10px;
}
ul{
margin-top: 0px;
padding-inline-start: 0%;
}
.box1>ul>li{
list-style-type: none;
float: left;
background-color:greenyellow;
text-align: center;
line-height: 30px;
margin: 5px;
padding: 5px;
border: #000000 1px solid;
}
/* .box3{
height: 30px;
width: 50px;
background-color:greenyellow;
text-align: center;
line-height: 30px;
margin: 5px;
border: #000000 1px solid;
}
.box4{
height: 30px;
width: 80px;
background-color:greenyellow;
text-align: center;
line-height: 30px;
margin: 5px;
border: #000000 1px solid;
} */
页面效果:
增删改练习:
/* 1、创建“广州”节点,添加到#city下
document.createElement("li");
-用于创建一个元素节点对象,需要一个标签名作为参数,
并将创建好的对象作为返回值返回
document.createTextNode();
-用于创建一个文本节点,需要一个文本内容作为参数,将会根据内容创建文本节点
父节点.appendChild(子节点);
-向一个父节点中添加一个新的子节点
2、将“广州”节点插入到#bj前面
父节点.insertBefore(新节点,旧节点);
-在指定的子节点前面插入新的子节点
-只能父节点调用
4、使用“广州”节点替换#bj节点
父节点. replaceChild(新节点,旧节点);
-可以指定新的节点替换已有的子节点
5、删除#bj节点
父节点.removeChild(子节点);
-删除指定子节点
简易方法:找到子节点的爸,让他爸干掉他
子节点.parentNode.removeChild(子节点);
示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>DOM增删改</title>
<link rel="stylesheet" type="text/css" href="./css/Domlianxi.css"/>
<script type="text/javascript">
window.onload=function(){
/* 1、创建“广州”节点,添加到#city下
document.createElement("li");
-用于创建一个元素节点对象,需要一个标签名作为参数,
并将创建好的对象作为返回值返回
document.createTextNode();
-用于创建一个文本节点,需要一个文本内容作为参数,将会根据内容创建文本节点
父节点.appendChild(子节点);
-向一个父节点中添加一个新的子节点
*/
myClick("btn01",function(){
//创建“广州”节点 <li>广州</li>
/* var city=document.getElementById("city");//获取父节点
var li=document.createElement("li");//创建li
var gztext=document.createTextNode("广州");//创建文本节点
li.appendChild(gztext);//添加了,但是只显示在内存里面
city.appendChild(li);//将它添加到UL当中才能在页面中显示 */
//city.innerHTML+="<li>广州</li>";//直接添加(简单方便、但变化较大)
/* 两个方法折中一下 */
var city=document.getElementById("city");//获取父节点
var li=document.createElement("li");//创建li
li.innerHTML="广州";
city.appendChild(li);
});
/* 2、将“广州”节点插入到#bj前面
父节点.insertBefore(新节点,旧节点);
-在指定的子节点前面插入新的子节点
-只能父节点调用 */
myClick("btn02",function(){
//在内存里面创建一个
var li=document.createElement("li");
var gzText=document.createTextNode("广州");
li.appendChild(gzText);
var bj=document.getElementById("bj");//获取bj节点
var city=document.getElementById("city");//获取父节点
city.insertBefore(li,bj);//插入到节点之前
});
//3、设置#bj内的HTML代码
myClick("btn03",function(){
var bj=document.getElementById("bj");//获取bj节点
bj.innerHTML="重庆";
});
/* 4、使用“广州”节点替换#bj节点
父节点. replaceChild(新节点,旧节点);
-可以指定新的节点替换已有的子节点
*/
myClick("btn04",function(){
//在内存里面创建一个
var li=document.createElement("li");
var gzText=document.createTextNode("广州");
li.appendChild(gzText);
var bj=document.getElementById("bj");//获取bj节点
var city=document.getElementById("city");//获取父节点
city.replaceChild(li,bj);//替换
});
/* 5、删除#bj节点
父节点.removeChild(子节点);
-删除指定子节点
简易方法:找到子节点的爸,让他爸干掉他
子节点.parentNode.removeChild(子节点);
*/
myClick("btn05",function(){
var bj=document.getElementById("bj");//获取bj节点
/* var city=document.getElementById("city");//获取父节点
city.removeChild(bj); */
bj.parentNode.removeChild(bj);
});
//6、读取#city内的HTML代码
myClick("btn06",function(){
var city=document.getElementById("city");//获取父节点
alert(city.innerHTML);
});
};
//将获取按钮封装为一个函数
function myClick(idStr,fun){
var btn=document.getElementById(idStr);
btn.onclick=fun;
};
</script>
</head>
<body>
<div class="b1">
<div class="box1">
<p>你喜欢哪个城市?</p>
<ul id='city'>
<li class="box3" id="bj">北京</li>
<li class="box3">上海</li>
<li class="box3">东京</li>
<li class="box3">首尔</li>
</ul></div>
<div class="b1_1" id="btnList">
<div><button id="btn01">创建“广州”节点,添加到#city下</button></div>
<div><button id="btn02">将“广州”节点插入到#bj前面</button></div>
<div><button id="btn03">设置#bj内的HTML代码</button></div>
<div><button id="btn04">使用“广州”节点替换#bj节点</button></div>
<div><button id="btn05">删除#bj节点</button></div>
<div><button id="btn06">读取#city内的HTML代码</button></div>
</div>
</body>
</html>