<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script type="text/javascript">
/*
定义一个函数,专门用来为指定元素绑定单击响应函数
参数:
idStr 绑定单击响应函数的对象的id属性值
fun 事件的回调函数,当单击元素时,该函数将会被触发
*/
function myClick(idStr,fun){
var btn = document.getElementById(idStr);
btn.onclick = fun;
}
window.onload = function () {
// ----------------------------按钮 1----------------------------------------------------------
// 为id为btn01的按钮绑定一个单击响应函数
var btn01 = document.getElementById("btn01");
btn01.onclick = function () {
// alert("hello");
// 查找#bj节点
var bj = document.getElementById("bj");
// 打印bj
// innerHTML 通过这个属性可以获取到元素内部的html代码
console.log("bj.innerHTML: " + bj.innerHTML);
// alert(bj.innerHTML);
};
// ----------------------------按钮 2----------------------------------------------------------
// 为id为btn02的按钮绑定一个单击响应函数
var btn02 = document.getElementById("btn02");
btn02.onclick = function () {
//查找所有li的节点
// getElementByTagName()可以根据标签名来获取一组元素节点对象
// 这个方法会给我们返回一个类数组对象,所有查询到的元素都会封装到对象中
// 即使查询到的元素只有一个,也会封装到数组中返回
var lis = document.getElementsByTagName("li");
// 打印lis
// alert(lis.length);//li的长度:11
// 变量lis
for (var i = 0; i < lis.length; i++) {
console.log("lis[i].innerHTML: " + lis[i].innerHTML);
}
};
// ----------------------------按钮 3----------------------------------------------------------
//为id为btn03的按钮绑定一个单击响应函数
var btn03 = document.getElementById("btn03");
btn03.onclick = function () {
// 查找name=gender的所有节点
var inputs = document.getElementsByName("gender");
// alert(inputs.length);
for (var i = 0; i < inputs.length; i++) {
/*
innerHTML用于获取元素内部的HTML代码的
对于自结束标签,这个属性没意义
*/
/*
如果需要读取元素节点属性,
直接使用元素.属性名
例子:元素.id 元素.name 元素.value
注意:class属性不能采用这种方式,
读取clss属性是需要使用元素.className
*/
console.log("inputs : " + inputs[i].value);
}
// }
};
// ----------------------------按钮4:查找#city下所有li节点--------------------------------------------------------
// 为id为btn04的按钮绑定一个单击响应函数
var btn04=document.getElementById("btn04");
btn04.onclick=function(){
var city=document.getElementById("city");//获取id为city的元素
// 查找#city下所有li节点
var lis = city.getElementsByTagName("li");
// console.log(lis.length);
for(var i=0;i<lis.length;i++){
console.log(lis[i].innerHTML);
}
};
// ----------------------------按钮5:返回#city的所有节点--------------------------------------------------------
// 为id为btn05的按钮绑定一个单击响应函数
var btn05=document.getElementById("btn05");
btn05.onclick=function(){
// 获取id为city的节点
var city=document.getElementById("city");
// 返回#city的所有节点
/*
childNodes属性会获取包括包括文本节点在呢的所有节点
根据DOM标签标签间空白也会当成文本节点
注意:在IE8及以下的浏览器中,不会将空白文本当成子节点,
所以该属性在IE8中会返回4个子元素而其他浏览器是9个
*/
var cns=city.childNodes;
// console.log(cns.length);
// for(var i=0; i<cns.length;i++){
// console.log(cns[i]);
// }
/*children属性可以获取当前元素的所有子元素*/
var cns2=city.children;
console.log(cns2.length);
};
// ----------------------------按钮6:返回#phone的第一个子节点----------------------------------------------------
var btn06=document.getElementById("btn06");
btn06.onclick=function(){
var phone=document.getElementById("phone");
// phone.childNodes[0];
// firstChild可以获取到当前元素的第一个子节点(包括空白文本节点)
var first=phone.firstChild;
// firstElementChild可以获取当前元素的第一个子元素
// firstElementChild不支持IE8及以下的浏览器,如果需要兼容她们尽量不要使用
// first=phone.firstElementChild;
console.log(first.innerHTML);
};
// ----------------------------按钮7: 返回#bj的父节点-------------------------------------------------------------
myClick("btn07",function(){
// 获取id为bj的节点
var bj=document.getElementById("bj");
// 返回#bj的父节点
var pn=bj.parentNode;
// console.log(pn.innerHTML);
/* innerText
-该属性可以获取到元素内部的文本内容
它和innerHTML类似们不同的是它会自动关机将html去掉
*/
console.log(pn.innerText);
}
);
// ----------------------------按钮8: 返回#android的前一个兄弟节点-------------------------------------------------
myClick("btn08",function(){
var and=document.getElementById("android");
// 返回#android的前一个兄弟节点(也可能获取到空白的文本)
var pre=and.previousSibling;
// console.log(pre.innerHTML);
// previousElementSibling获取前一个兄弟元素,IE8及以下不支持
// var ps=and.previousElementSibling;
console.log(pre);
}
);
// ----------------------------按钮9: 读取#username的value属性值-------------------------------------------------
myClick("btn09", function () {
// 获取id为username的元素
var um=document.getElementById("username");
//读取um的value属性值
// 文本框的value属性值,就是文本框中填写的内容
console.log(um.value);
}
);
// ----------------------------按钮10: 设置#username的value属性值-------------------------------------------------
myClick("btn10", function () {
var um = document.getElementById("username");
um.value="今天的天气真不错~~~~~~";
}
);
// ----------------------------按钮11: 返回#bj的文本值------------------------------------------------------------
myClick("btn11", function () {
var bj=document.getElementById("bj");
// console.log(bj.innerHTML);
// console.log(bj.innerText);
/* // 获取bj中的文本节点
var fc=bj.firstChild;
console.log(fc.nodeValue); */
console.log(bj.firstChild.nodeValue);
}
);
};
</script>
</head>
<body>
<div id="total">
<div class="inner">
<p>
你喜欢哪个城市
</p>
<ul id="city">
<li id="bj">北京</li>
<li>上海</li>
<li>东京</li>
<li>首尔</li>
</ul>
<br>
<br>
<p>
你喜欢哪款单机游戏?
</p>
<ul id="game">
<li id="rl">红警</li>
<li>实况</li>
<li>极品飞车</li>
<li>魔兽</li>
</ul>
<br />
<br />
<p>
你手机的操作系统是?
</p>
<ul id="phone"><li>IOS</li><li id="android">android</li><li>Windows Phone</li>
</ul>
</div>
<div class="inner">
gender:
<input type="radio" name="gender" value="male" />
Male
<input type="radio" name="gender" value="female" />
Female
<br>
<br>
name:
<input type="text" name="name" id="username" value="abcde" />
</div>
</div>
<div id="btnList">
<div id="btn01"><button>查找#bj节点</button></div>
<div id="btn02"><button>查找所有li节点</button></div>
<div id="btn03"><button>查找name=gender的所有节点</button></div>
<div id="btn04"><button>查找#city下所有li节点</button></div>
<div id="btn05"><button>返回#city的所有节点</button></div>
<div id="btn06"><button>返回#phone的第一个子节点</button></div>
<div id="btn07"><button>返回#bj的父节点</button></div>
<div id="btn08"><button>返回#android的前一个兄弟节点</button></div>
<div id="btn09"><button>读取#username的value属性值</button></div>
<div id="btn10"><button>设置#username的value属性值</button></div>
<div id="btn11"><button>返回#bj的文本值</button></div>
</div>
</body>
</html>