JavaScript DOM查詢(元素節點,父類子類兄弟類)練習


<!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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM