当前位置:主页 > 查看内容

知道这两个 DOM 属性区别的,头发应该不多了吧?

发布时间:2021-06-07 00:00| 位朋友查看

简介:你可能知道,获取和设置 DOM 元素内部文本可以用这两个属性:Node.textContent 和 Element.innerText。 乍一看,它们似乎做着完全相同的事情,但它们之间有一些微妙但重要的区别。今天,我们来看看它们的作用,以及它们的异同之处。 废话不说,直接看代码。……

你可能知道,获取和设置 DOM 元素内部文本可以用这两个属性:Node.textContent 和 Element.innerText。

乍一看,它们似乎做着完全相同的事情,但它们之间有一些微妙但重要的区别。今天,我们来看看它们的作用,以及它们的异同之处。

废话不说,直接看代码。

相同之处

比如下面这个 DOM 元素。

  1. <p id="sandwich">I love a good tuna sandwich!</p> 

Node.textContent 和Element.innerText属性都能获取#sandwich 元素内部的文本。

  1. let sandwich = document.querySelector('#sandwich'); 
  2.  
  3. // returns "I love a good tuna sandwich!" 
  4. let text1 = sandwich.textContent; 
  5.  
  6. // also returns "I love a good tuna sandwich!" 
  7. let text2 = sandwich.innerText; 

如果元素内部还有其他标签,它们都会忽略。

  1. <p id="sandwich">I love a good <strong>tuna</strong> sandwich!</p> 
  1. // returns "I love a good tuna sandwich!" 
  2. let textHTML1 = sandwich.textContent; 
  3.  
  4. // also returns "I love a good tuna sandwich!" 
  5. let textHTML2 = sandwich.innerText; 

另外,这两个属性都能用于设置元素内部文本。

  1. // 替换文本 
  2. // <p id="sandwich">Hello, world!</p> 
  3. sandwich.textContent = 'Hello, world!'
  4.  
  5. // 也可以追加 
  6. // <p id="sandwich">Hello, world! And hi, Universe!</p> 
  7. sandwich.innerText += ' And hi, Universe!'

不同之处

看上去做着同样的事情,那么它们有什么区别?

  • Node.textContent 属性获取全部文本内容,包括元素内部那些未渲染到页面的内容。
  • Element.innerText 只返回渲染出来的文本,类似于可以用光标和键盘选中的文本部分。

举个例子就清楚了。

  1. <div class="greeting"
  2.  <style type="text/css"
  3.   p { 
  4.    color: rebeccapurple; 
  5.   } 
  6.  </style> 
  7.  <p hidden>This is not rendered.</p> 
  8.  <p>Hello world!</p> 
  9. </div> 
  1. let greeting = document.querySelector('.greeting'); 
  2.  
  3. /* 返回  
  4. p {color: rebeccapurple;}  
  5. This is not rendered.  
  6. Hello world! 
  7. */ 
  8. let text1 = greeting.textContent; 
  9.  
  10. // 返回 "Hello world!" 
  11. let text2 = greeting.innerText; 

这下总算知道区别了!又躺学了一个知识点~

本文转载自微信公众号「1024译站」,可以通过以下二维码关注。转载本文请联系1024译站公众号


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/6UfLf6UECKfAZiK781Ltqw
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:几年前,我撸了一套RabbitMQ的客户端 下一篇:没有了

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐