Js之Dom學習-三種獲取頁面元素的方式、事件、innerText和innerHTML的異同


一、三種獲取頁面元素的方式:

getElementById:通過id來獲取

<body>
<input type="text" value="請輸入一個值:" id="txt"/>
<input type="button" value="按鈕" id="btn"/>
<script>
    var txt=document.getElementById("txt");//獲取id為txt的頁面元素
    console.log(txt);
    txt.value="haha";//重新給id為txt的文本輸入框的value賦值
</script>
</body>

getElementByTagName:通過標簽名來獲取

<body>
<input type="text" value="請輸入一個值:" />
<input type="text" value="請輸入一個值:" />
<input type="text" value="請輸入一個值:" />
<input type="text" value="請輸入一個值:" />
<input type="text" value="請輸入一個值:" />
<script>
    var inputs=document.getElementsByTagName("input");//獲取標簽名為input所有頁面元素。
    console.log(inputs); //在控制台中打印可以發現其是一個數組
    for(var i=0;i<inputs.length;i++){
        inputs[i].value="請輸入另一個值:";//for循環遍歷所有的input元素,可以給他的value重新賦值。
    }
</script>
</body>

getElementByClassName:通過類名來獲取(注意:getElementsByClassName有很強的兼容性問題,一般不用)

 

<body>
<div class="haha"><button class="btn">按鈕</button></div>
<script>
    var Haha=document.getElementsByClassName("haha");//獲取class為haha的頁面元素
    console.log(Haha);  //打印出來之后發現也是以數組的形式呈現
    var Btn=document.getElementsByClassName("btn");
    Btn[0].innerText="按鈕1";  //因為本代碼中只有一個類名為btn的button標簽,所以可用它的也就是數組的首項控制這個button里面的屬性。

</script>
</body>

 

二、事件:

事件的三要素:事件源、事件名稱、事件的處理程序(里面執行的代碼或代碼段)

如何注冊一個點擊事件?

<body>
<input type="button" value="按鈕" alt=""  id="btn1"/>
<input type="button" value="按鈕2" alt="" id="btn2"/>
<input type="button" value="按鈕3" alt="" id="btn3" />
<input type="button" value="按鈕4" alt="" id="btn4" />
<img src="images/1.jpg" alt="" id="img"/>
<script>
    var img=document.getElementById("img");
    var btn1=document.getElementById("btn1");
    var btn2=document.getElementById("btn2");
    var btn3=document.getElementById("btn3");
    var btn4=document.getElementById("btn4");
//第一步獲取事件源:這里是分別通過id獲取一個img與四個button元素,並將它們的值存儲在一個變量之中。
   btn1.onclick=function(){  //第二步:給事件源注冊一個事件(下同)
        img.src="images/2.jpg";  //第三步:事件的處理程序。function(){}里面的代碼就是事件的需要處理的程序。
    };
    btn2.onclick=function (){
        img.src="images/3.jpg";
    };
    btn3.onclick=function (){
        img.src="images/4.jpg";
    };
    btn4.onclick=function(){
        img.src="images/1.jpg";
    };
</script>
</body>

注冊事件的兩種方式小結:

Css樣式:

<style>
 a img{
     display: block;
     float: left;
 }
    p{
        clear: both;
    }
</style>

行內式:

<body>
<a href="images/1.jpg" id="a1"  onclick="turn1();return false;"><img src="images/1-small.jpg" alt="" /></a>
<!--return false讓a標簽不能跳轉-->
<a href="images/2.jpg" id="a2"  onclick="turn2();return false;"><img src="images/2-small.jpg" alt="" /></a>
<a href="images/3.jpg" id="a3"  onclick="turn(this);return false;"><img src="images/3-small.jpg" alt="" /></a>
<!this指代的是當前頁面元素對象,本段代碼中this指的就是本段代碼的a標簽 -->
<a href="images/4.jpg" id="a4"  onclick="turn(this);return false;"><img src="images/4-small.jpg" alt="" /></a>
<a href="images/5.jpg" id="a5"  onclick="turn(this);return false;"><img src="images/5-small.jpg" alt="" /></a>
<p></p>
<img src="images/placeholder.png" alt="" width="400" id="img"/>
<script>
    var img=document.getElementById("img");
    var a1=document.getElementById("a1");
    var a2=document.getElementById("a2");
//    var a3=document.getElementById("a3");
//    var a4=document.getElementById("a4");
//    var a5=document.getElementById("a5");
    function turn1(){
        img.src=a1.href;
    }
    function turn2(){
        img.src=a2.href;
    }
    function turn(jkl){   //封裝這個事件的功能,jkl為函數傳入的參數,傳到HTML代碼的turn(this)之中
        img.src=jkl.href; //此處是時間所執行的程序。作用是將上述HTML之中的img之中的src改為a標簽的href路徑。
    }
</script>
</body>

內嵌式:

<body>
<a href="images/1.jpg"><img src="images/1-small.jpg" alt=""/></a>
<!--return false組織a標簽的默認跳轉方式-->
<a href="images/2.jpg"><img src="images/2-small.jpg" alt=""/></a>
<a href="images/3.jpg"><img src="images/3-small.jpg" alt=""/></a>
<a href="images/4.jpg"><img src="images/4-small.jpg" alt=""/></a>
<a href="images/5.jpg"><img src="images/5-small.jpg" alt=""/></a>
<p></p>
<img src="images/placeholder.png" alt="" width="400" id="img"/>
<script>
    var img = document.getElementById("img");
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) { //因為使用getElementByTagName獲取a標簽元素時,所得的是一個數組,所以需要循環遍歷數組中的每一個a標簽
        var link = links[i];   //先將獲取到的每一個a標簽存入一個變量link之中
        link.onclick = function () { //注冊一個事件,並封裝它的功能
            img.src = this.href;  //this指代當前注冊觸發事件的對象a
            return false;
        }
    }
</script>
</body>

三、獲取頁面文本的API:innerText和innerHTML的異同點:

<body>
<div id="one">
    <p>這是一段文字</p>
    <p>這是一段文字</p>
    <p>這是一段文字</p>
    <p>這是一段文字</p>
    <p>這是一段文字</p>
    <p>這是一段文字</p>
</div>
<script>
   var one=document.getElementById("one");
    console.log(one.innerText);  //打印的是文本內容信息
                               //早期火狐瀏覽器不支持innnerText,而支持innnerHTML,后期全部支持了。
    console.log(one.innerHTML); //打印的是頁面元素中的所有內容,包括標簽
</script>
</body>
console.log(one.innerText); 

   單獨運行在控制台中的結果:

這里可以看出innnerText打印的是文本的內容信息。

 

console.log(one.innerHTML);

單獨運行在控制台運行結果:

這里可以看出innnerHTML打印的是頁面元素之中的所有內容,包括HTML標簽。

 

 

相同點:在瀏覽器顯示的結果相同,但是早期的火狐瀏覽器不支持innnerText,而支持innerHTML,后來兩者都支持了,所以它們在瀏覽器中顯示的結果相同。

<div id="one">
</div>
<script>
    var one=document.getElementById("one");
    one.innerText="<ul><li>123</li><li>234</li><li>345</li></ul>"; //原樣輸出
//    one.innerHTML="<ul><li>123</li><li>234</li><li>345</li></ul>"; //會發生轉譯
</script>

 

(1)       單獨運行第一句時的結果是:

 

 

(2)       單獨運行第二句時的結果是:

比較之后可以發現:用innerText時是按原來引號之中的內容輸出,而使用innnerHTML引號之中的內容則會轉譯成html語言的形式輸出。



 
        

 


免責聲明!

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



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