◆

JavaScript innerHTML、textContent 与 innerText 区别

2023-02-02 01:370

示例代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0"
    />
  </head>
  <body>
    <div id="test">
      <div id="son_one" style="visibility: hidden">son_one</div>
      <!--测试-->
      <div class="my_test" style="display: none" id="son_two">
        <p id="son_two_p">son_two</p>
      </div>
      <div class="my_test" style="color: blue!important;z-index: -1">
        son_three
      </div>
      <div class="my_test" style="opacity: 0" id="son_four">
        <p id="son_four_p">son_four</p>
      </div>
      <div class="my_test" style="opacity: 1">son_five</div>
      <script>
        var test = '这是测试';
      </script>
      <style>
        * {
          margin: 0;
          padding: 0;
        }
      </style>
    </div>
    <script>
      // var byId = document.getElementById('test').normalize()
      var byId = document.getElementById('test');
      //  textContent 属性表示一个节点及其后代的文本内容
      console.log('textContent:', byId.textContent);
      console.log('document.textContent:', document.textContent);
      // 获取整个文档的文本
      // console.log('document.textContent:', document.documentElement.textContent)
      console.log('innerText:', byId.innerText);
      console.log('innerHTML:', byId.innerHTML);

      // byId.innerHTML += `<div>11</div>`
      byId.insertAdjacentHTML('beforeend', `<div>11</div>`);
      byId.insertAdjacentText('beforeend', `<div>22</div>`);
    </script>
  </body>
</html>
innerHtml+textContent

textContent

  • Node 接口的 textContent 属性表示一个节点及其后代的文本内容。它不会把给定的内容解析为 HTML,它仅仅是将原始文本插入给定的位置。
  • textContent 会获取所有元素的内容,包括 <script> 和 <style> 元素

innerText

  • innerText 只展示给人看的元素。对于 display: none 和 visibility: hidden 的元素不展示
  • 由于 innerText 受 CSS 样式的影响,它会触发回流( reflow )去确保是最新的计算样式。(回流在计算上可能会非常昂贵,因此应尽可能避免。)

innerHTML

  • Element.innerHTML 属性设置或获取 HTML 语法表示的元素的后代。会获取所有元素的内容,包括 <script> 和 <style> 元素

insertAdjacentHTML / insertAdjacentText

  • insertAdjacentHTML:将指定的文本解析为 Element 元素,并将结果节点插入到 DOM 树中的指定位置。
  • insertAdjacentText:方法将一个给定的文本节点插入在相对于被调用的元素给定的位置。
  • 它不会重新解析它正在使用的元素,因此它不会破坏元素内的现有元素。这避免了额外的序列化步骤,使其比直接使用 innerHTML 操作更快。
  • 语法 element.insertAdjacentHTML(position, text);
    • position: 一个 DOMString,表示插入内容相对于元素的位置,并且必须是以下字符串之一:
      • beforebegin:元素自身的前面。
      • afterbegin:插入元素内部的第一个子节点之前。
      • beforeend:插入元素内部的最后一个子节点之后。
      • afterend:元素自身的后面。
    • text: 是要被解析为 HTML 或 XML 元素,并插入到 DOM 树中的 DOMString。
💬留言板0

还没有留言,来发表第一条吧~

PAGE LOAD / LIVEJavaScript innerHTML、textContent 与 innerText 区别加载中