1. 程式人生 > >javaScript中innerHTML,innerText,outerHTML,outerText的區別

javaScript中innerHTML,innerText,outerHTML,outerText的區別

idt 是把 text .get rip font 獲取對象 http edge

開頭說下innerText和outerText只在chrome瀏覽器中有效

定義和用法

innerHTML 屬性設置或返回表格行的開始和結束標簽之間的 HTML,包括標簽。

來看代碼

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible"
content="ie=edge"> <title>Document</title> </head> <body> <div id="div1">這是一個標簽div</div> <span id="span1">這是一個標簽span</span> <div id="div2"> <span>div2裏面的span1</span> <span>div2裏面的span2</span>
</div> <script> var div1 = document.getElementById("div1").innerHTML; var span1 = document.getElementById("span1").innerHTML; var div2 = document.getElementById("div2").innerHTML; console.log(div1); console.log(span1); console.log(div2);
</script> </body> </html>

我定義了三個標簽 ,然後用console打印出來

技術分享

可以看出如果如果當前標簽只有文字,那innerHTML只會輸出文字

如果還有子標簽存在,則會將子標簽以及標簽內的文字一起輸出,這點一定要切記

這個時候你可以用replace方法來將標簽去除

只獲得文本內容

document.getElementById(‘div2‘).innerHTML.replace(/<.+?>/gim,‘‘));

技術分享

如上,span標簽已經沒有了,只剩下裏面的文本內容

定義和用法

innerText 屬性設置或返回表格行的開始和結束標簽之間的 HTML內容,不包括Html標簽。 我們看代碼
<body>
    <div id="div1">這是一個標簽div</div>
    <span id="span1">這是一個標簽span</span>
    <div id="div2">
        <span>div2裏面的span1</span>
        <span>div2裏面的span2</span>
        <img src="" alt="">
    </div>
    <script>
        var div1 = document.getElementById("div1").innerText;
        var span1 = document.getElementById("span1").innerText;
        var div2 = document.getElementById("div2").innerText;
        console.log(div1);
        console.log(span1);
        console.log(div2);
        
    </script>
</body>

打印出來的結果 技術分享

從結果可以看到不管是當前標簽還是子標簽都只輸出文本內容

定義和用法

outerHTML 設置或獲取對象及其內容的HTML形式,也就是標簽和文本內容全都顯示出來 我們看代碼
<body>
    <div id="div1">這是一個標簽div</div>
    <span id="span1">這是一個標簽span</span>
    <div id="div2">
        <span>div2裏面的span1</span>
        <span>div2裏面的span2</span>
        <img src="" alt="">
    </div>
    <script>
        var div1 = document.getElementById("div1").outerHTML;
        var span1 = document.getElementById("span1").outerHTML;
        var div2 = document.getElementById("div2").outerHTML;
        console.log(div1);
        console.log(span1);
        console.log(div2);
    </script>
</body>

我們看控制臺的打印結果

技術分享

有意思吧

outerHTML是把當前標簽的全部內容包括標簽本身也全部取出來了

定義和用法

outerText 設置或獲取對象及其內容的HTML形式,也就是標簽和文本內容全都顯示出來

我們來看代碼

<body>
    <div id="div1">這是一個標簽div</div>
    <span id="span1">這是一個標簽span</span>
    <div id="div2">
        你好世界
        <span>div2裏面的span1</span>
        <span>div2裏面的span2</span>
        <img src="" alt="">
    </div>
    <script>
        var div1 = document.getElementById("div1").outerText;
        var span1 = document.getElementById("span1").outerText;
        var div2 = document.getElementById("div2").outerText;
        console.log(div1);
        console.log(span1);
        console.log(div2);
    </script>
</body>

看console打印的結果

技術分享

很顯然,outerText是把當前標簽的內容給輸出了,如果有子標簽,也會把子標簽的內容也一起輸出了

那好,經過這麽一比較,我們就可以得出結論了

innerHTML 輸出當前標簽的文本內容,如果標簽內有子標簽,會連子標簽本身和子標簽內的文本內容一起輸出

innerText 只輸出當前標簽內的文本內容,如果標簽內有子標簽,那麽也只輸出子標簽內的文本內容

outerHTML 輸出當前標簽的本身和標簽內的文本內容,如果有子標簽,那麽子標簽本身和標簽內的文本內容也將一起輸出

outerText 只輸出當前標簽內的文本內容,如果標簽內有子標簽,那麽也只輸出子標簽內的文本內容

那麽outerText和innerText的區別到底在哪呢?同樣是只輸出文本內容,這兩個屬性在讀數據的時候是完全一樣的,可能在寫數據的時候不一樣?

下次寫jq的html(),text(),val()記錄時候更新一下

javaScript中innerHTML,innerText,outerHTML,outerText的區別