<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ list-style: none; } #main{ border: 1px solid black; width: 270px; height: 300px; float: left; text-align: center; } button{ display: block; text-align: center; margin-left:20px ; margin-top: 10px; } p{ display: block; } li{ display: block; background-color: lawngreen; width: 80px; margin: 5px ; float: left; } </style> </head> <body> <div id="main"> <p>你想去哪個城市?</p> <div id="city"> <li id="bj">北京</li> <li>武漢</li> <li>杭州</li> </div> <br /> <p>你喜歡哪個游戲?</p> <div id="game"> <li id="rl">紅警</li> <li>實況</li> <li>魔獸</li> </div> <br /> <p>你用的什么手機?</p> <div id="phone"> <li>ios</li> <li id="android">android</li> <li>windows</li> </div> <div> <input type="radio" name="gander" id="gander" value="male" /> male <input type="radio" name="gander" id="gander" value="female" /> female <br /> name: <input type="text" name="name" id="username" value="wang" /> </div> </div> <div id="main"> <button id="btn1">查找#bj節點</button> <button id="btn2">查找所有li節點</button> <button id="btn3">查找name=gander的所有節點</button> <button id="btn4">查找#city的所有li節點</button> <button id="btn5">返回#city的所有子節點</button> <button id="btn6">返回#phone的第一個子節點</button> <button id="btn7">返回#bj的父節點</button> <button id="btn8">返回#android的前一個兄弟節點</button> <button id="btn9">返回#username的value值</button> <button id="btn10">設置#username的value值</button> <button id="btn11">返回#bj的文本值</button> </div> </body> <script type="text/javascript"> /* * 發現每次寫每個按鈕獲取和單擊事件太多余, * 定義一個函數,專門來綁定指定元素的單擊函數 * 傳參: * idStr:要綁定單擊響應函數的對象id屬性值 * fun:時間的回調函數,單擊觸發事件 */ function myClick(idStr,fun){ var btn=document.getElementById(idStr); btn.onclick=fun; //從第七次開始調用 } /* * 獲取元素節點 ●通過document對象調用 1. getElementById( -通過id屬性獲取-個元素節點對象 2. getElementsByTagName() 一通過標簽名獲取一組元素節點對象 3. getElementsByName() 一通過name屬性獲取一組元素節點對象 */ //1.查找#bj節點 //獲取id為btn1的元素 var btn1=document.getElementById("btn1"); //事件處理 btn1.onclick=function(){ //獲取id為bj的元素 var bj=document.getElementById("bj"); alert(bj.innerHTML); } //2.查找所有li節點 var btn2=document.getElementById("btn2"); btn2.onclick=function (){ //getElementsByTagName()方法返回一個類數組對象, var lis=document.getElementsByTagName("li"); //alert(lis.innerHTML); //alert(lis.length); //6 //遍歷li元素內部代碼 for(i=0;i<lis.length;i++){ alert(lis[i].innerHTML); } } //3.查找name=gander的所有節點 var btn3=document.getElementById("btn3"); btn3.onclick=function(){ var inputs=document.getElementsByName("gander"); //alert(inputs.length); //2 for (i=0;i<inputs.length;i++) { //alert(inputs[i].innerHTML); //undefiend /*innerHTML對自結束的標簽沒意義, 要讀取屬性,元素.屬性名 注意:clas例外,要有className */ alert(inputs[i].name); } } /*獲取元素節點的子節點 ●通過具體的元素節點調用 1. getElementsByTagName() -方法,返回當前節點的指定標簽名后代節點 2. childNodes -屬性,表示當前節點的所有子節點 3. firstChild -屬性,表示當前節點的第一個子節點 4. lastChild -屬性,表示當前節點的最后一個子節點 */ //4.查找#city的所有li節點 var btn4=document.getElementById("btn4"); btn4.onclick=function(){ var city=document.getElementById("city"); var lis=city.getElementsByTagName("li"); //alert(lis.length); //3 for(i=0;i<lis.length;i++){ alert(lis[i].innerHTML); } } //5.返回#city的所有子節點 var btn5=document.getElementById("btn5"); btn5.onclick=function(){ var city=document.getElementById("city"); var cns=city.childNodes; //alert(cns.length); //7 //childNodes會獲取包括文本節點在內的所有節點, //DOM標簽間的空白也會當成文本節點 var cns1=city.children; //3 用children屬性獲取子元素跟符合邏輯 console.log(cns1.length); for(i=0;i<cns.length;i++){ alert(cns[i].innerHTML); } } //6.返回#phone的第一個子節點 var btn6=document.getElementById("btn6"); btn6.onclick=function(){ var phone=document.getElementById("phone"); var lis=city.getElementsByTagName("li"); var fir=phone.firstChild; //獲取第一個子節點,包括空白 // var fir=phone.lastChild;//獲取最后個子節點 alert(fir); var fir1=phone.firstElementChild; //獲取第一個子元素 alert(fir1); } /*獲取父節點和兄弟節點 ●通過具體的節點調用 1. parentNode -屬性,表示當前節點的父節點 2. previousSibling -屬性,表示當前節點的前一個兄弟節點 3. nextSibling 一屬性,表示當前節點的后一個兄弟節點 */ //7.返回#bj的父節點 //實參btn7的單擊函數傳遞 myClick("btn7",function(){ var bj=document.getElementById("bj"); var pn=bj.parentNode;//獲取父節點,只會是元素,不用考慮空白文本, //父類節點唯一的,不會是類數組 alert(pn.innerHTML);//打印下面的包括標簽里的全部內容 console.log(pn.innerText);//打印文本內容,自動去除標簽 }); //8.返回#android的前一個兄弟節點 myClick("btn8",function(){ var and=document.getElementById("android"); var ps=and.previousSibling;//獲取前一個兄弟節點,會獲取空白文本 // var ps=and.nextSibling; //獲取后一個兄弟節點 alert(ps); var ps1=and.previousElementSibling;//獲取前一個兄弟元素 alert(ps1.innerHTML); }); //9.返回#username的value值 myClick("btn9",function(){ var um=document.getElementById("username"); //讀取屬性值,元素.屬性 alert(um.value); }); //10.設置#username的value值 myClick("btn10",function(){ var um=document.getElementById("username"); //改屬性值,元素.屬性= um.value="wind"; }); //11.返回#bj的文本值 myClick("btn11",function(){ var bj=document.getElementById("bj"); //alert(bj.innerText); alert(bj.firstChild.nodeValue); alert(bj.firstChild.nodeName); }); /*節點的屬性 nodeName nodeType nodeValue 文檔節點 #document 9 null 元素節點 標簽名 1 null 屬性節點 屬性名 2 屬性值 文本節點 #text 3 ★文本內容 */ </script> </html>