DOM操作之獲取HTML、文本和值


在前面的知識中,我們有提到一個text()方法用來獲取文本,其實,在jQuery中,獲取HTML和文本的方法有很多,下面依次演示這些方法。

在開始操作前,我們先在html中添加如下代碼,后期所有的操作都在此基礎上進行。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="jquery-3.2.1.js"></script>
</head>
<body>
    <div id="one">北京你好</div>
    <div id="two"><span>上海也很好</span>,風景秀麗<a>重慶</a></div>
    <input type="text" id="username" value="tom" />
</body>
</html>

html()

在JavaScript中,可以通過innerHTML方法獲取元素包含的具體內容。

$(function(){
       console.log(document.getElementById('one').innerHTML); 
       console.log(document.getElementById("two").innerHTML);
 })

從上面的例子中我們可以看到,innerHTML會把節點包含的【文本 和 元素標簽內容】都給抓取出來,在jQuery中,也有一個類似的方法,可以獲取節點包含的內容,那就是html()。

 $(function(){
      console.log($('#one').html()); 
      console.log($('#two').html()); 
 })

目前看起來,兩個方法是一樣的,但是其實網上有很多地方有提出innerHTML對於像table類的元素標簽不起作用,還會報錯,具體的我沒有研究,下次應該會看一下。

很顯然,html()除了可以獲取節點內容外,還可以設置節點內容。

 $(function(){
       $('#one').html("天津你也好"); 
       $("#two").html("<p><a href='http://www.chongqing.com'>重慶</a>很好</p>");
 })

當我們向html()方法中傳遞參數的時候,這個參數就會成為匹配元素的內容,這個參數可以說是純文本,也可以是html標簽內容。

text()

在JavaScript中,可以通過innerText方法,獲取元素的純文本內容。

$(function(){
      console.log(document.getElementById('one').innerText);
      console.log(document.getElementById("two").innerText); 
 })

在jQuery中,也有一個類似的方法,可以獲取純文本,那就是text(),這個方法只對文本起作用,在獲取節點的內容時,會把html標簽刪除,只保留文本內容。

$(function(){
      console.log($("#one").text()); 
      console.log($("#two").text());
 })

這兩個方法在獲取節點內容的時候,效果幾乎相同,但是需要特別注意的是,在《鋒利的jQuery》一書中,提到innerText在Firefox瀏覽器中並不能運行,但我試驗的時候是沒有報錯,而是正常運行,不知道是不是版本的原因。

自然,text()方法還可以用來設置節點內容。

$(function(){
      $("#one").text("百度");
      $("#two").text("<a href='http://www.baidu.com'>百度</a>");
 })

也就是說,即使在內容里添加了html標簽,也會被當做純文本解析。

val()

val()類似於JavaScript中的value屬性,可以用來設置和獲取元素的值,無論元素是文本框、下拉列表還是單選框,它都可以返回元素的值,如果元素為多選,則返回一個包含所有選擇的值的數組。

 $(function(){
        console.log($("#username").val());  
 })

 $(function(){
        $("#username").val('jack');
        console.log($("#username").val());  
 })

  


免責聲明!

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



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