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

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

[[381265]]

你可能知道,获取和设置 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译站公众号。

 

责任编辑:武晓燕 来源: 1024译站
相关推荐

2023-01-13 16:57:50

SpringBoot配置核心

2020-12-10 10:32:33

区块链比特币数字货币

2022-06-17 09:46:51

Chrome 102Chrome浏览器

2022-02-21 23:08:50

Kubernetes集群容器

2022-06-23 08:01:48

hookSetMap

2009-07-01 14:49:52

JSP空间租用

2017-08-28 14:47:54

NASSAN存储

2022-05-19 13:28:49

Linux桌面

2018-02-27 15:49:01

HTC粉丝手机

2018-02-02 11:36:25

2020-02-27 14:05:26

SQLServer数据库

2021-12-02 07:50:30

字节缓冲流使用

2021-06-30 21:20:21

Python变量闭包

2020-08-18 08:22:46

归并排序

2023-01-10 08:50:10

OracleCBO优化器

2023-09-12 08:19:48

接口Controller线程

2021-05-11 16:44:42

Windows工具软件

2021-03-15 09:44:39

Broker源码RocketMQ

2021-12-14 07:40:08

前端

2018-03-21 12:13:47

工具数据开发
点赞
收藏

51CTO技术栈公众号