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

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

废话不说,直接看代码。

相同之处

比如下面这个 DOM 元素。

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

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

let sandwich = document.querySelector('#sandwich');

// returns "I love a good tuna sandwich!"
let text1 = sandwich.textContent; // also returns "I love a good tuna sandwich!"
let text2 = sandwich.innerText;

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

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

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

// 替换文本
// <p id="sandwich">Hello, world!</p>
sandwich.textContent = 'Hello, world!'; // 也可以追加
// <p id="sandwich">Hello, world! And hi, Universe!</p>
sandwich.innerText += ' And hi, Universe!';

不同之处

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

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

举个例子就清楚了。

<div class="greeting">
<style type="text/css">
p {
color: rebeccapurple;
}
</style>
<p hidden>This is not rendered.</p>
<p>Hello world!</p>
</div>
let greeting = document.querySelector('.greeting');

/* 返回
p {color: rebeccapurple;}
This is not rendered.
Hello world!
*/
let text1 = greeting.textContent; // 返回 "Hello world!"
let text2 = greeting.innerText;

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

本文首发于公众号 1024译站

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

  1. JavaScript 节点操作Dom属性和方法(转)

    JavaScript 节点操作Dom属性和方法   一些常用的dom属性和方法,列出来作为手册用. 属性:   1.Attributes 存储节点的属性列表(只读)   2.childNodes 存储 ...

  2. Js位置与大小(1)——正确理解和运用与尺寸大小相关的DOM属性

    在web开发中,不可避免遇到要计算元素大小以及位置的问题,解决这类问题的方法是利用DOM提供的一些API结合兼容性处理来,所有内容大概分3篇左右的文章的来说明.本文作为第一篇,介绍DOM提供的与尺寸大 ...

  3. DOM – (w3school)1.DOM 方法 + 2.DOM属性 + 3.DOM 元素

      1.DOM 方法   一些 DOM 对象方法 这里提供一些您将在本教程中学到的常用方法: 方法 描述 getElementById() 返回带有指定 ID 的元素. getElementsByTa ...

  4. JavaScript中易混淆的DOM属性及方法对比

    JavaScript中易混淆的DOM属性及方法对比 ParentNode.children VS Node.prototype.childNodes ParentNode.children:该属性继承 ...

  5. jQuery 源码分析(十三) 数据操作模块 DOM属性 详解

    jQuery的属性操作模块总共有4个部分,本篇说一下第2个部分:DOM属性部分,用于修改DOM元素的属性的(属性和特性是不一样的,一般将property翻译为属性,attribute翻译为特性) DO ...

  6. 借助JavaScript中的Dom属性改变Html中Table边框的颜色

    借助JavaScript中的Dom属性改变Html中Table边框的颜色 -------------------- <html> <head> <title>我是页 ...

  7. HTML DOM 属性 对象

    HTML DOM 属性 对象 HTML DOM 节点 在 HTML DOM (Document Object Model) 中, 所有的都是 节点: 文档是文档节点 所有 HTML 元素是元素节点 所 ...

  8. strus2中获取表单数据 两种方式 属性驱动 和模型驱动

    strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值 * 如果一个属性在对象栈,在页面 ...

  9. 【Jquery系列】之DOM属性

    1   概述 本章将结合JQuery官方API,对Jquery属性进行分析与讲解.主要讲.addClass(),.attr(),,hasClass(),,html(),.prop(),.removeA ...

随机推荐

  1. 关于SANGFOR AC记录上网记录

    1.查看加密APP的访问记录,不支持推送证书的方式.也就是这种的是没办法查看到的:2.查看加密网站的访问记录,通过推送证书,电脑可以查看到:手机端安卓的不能,苹果可以,但是不建议做,适用性不好:3.查 ...

  2. ness使用-漏扫

    1.登录nessus后,会自动弹出目标输入弹框: 输入目标IP,可通过CIDR表示法(192.168.0.0/80),范围(192.168.0.1-192.168.0.255),或逗号分隔(192.1 ...

  3. shell脚本的使用该熟练起来了,你说呢?(篇一)

    作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:羽林君

  4. HDU5691 Sitting in Line【状压DP】

    HDU5691 Sitting in Line 题意: 给出\(n\)个数字,有些数字的位置固定了,现在要求把所有没固定的数字放在一个位置,使得任意相邻两个位置的数字的相乘的和最大 题解: \(n\) ...

  5. 2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)(9/11)

    $$2017-2018\ ACM-ICPC\ German\ Collegiate\ Programming\ Contest (GCPC 2017)$$ \(A.Drawing\ Borders\) ...

  6. Codeforces Round #665 (Div. 2) Distance and Axis、

    题目链接:Distance and Axis 题意:在ox轴上,给出点A的横坐标x,你可以向左或右移动点A(x+1/x-1),问你最小移动A的次数,以使得可以在ox轴上找到B点位置,B点满足从O到B的 ...

  7. HDU 3336——Count the string

    It is well known that AekdyCoin is good at string problems as well as number theory problems. When g ...

  8. Fiddler+雷电模拟器进行APP抓包

    1.下载最新版Fiddler,强烈建议在官网下载:https://www.telerik.com/download/fiddler 2. 正常傻瓜式安装,下一步,下一步,安装完毕后,先不用急于打开软件 ...

  9. MySQL 语句及其种类

    DDL(Data Definition Language) DDL(Data Definition Language),数据定义语言 CREATE:创建数据库和表等对象 DROP:删除数据库和表等对象 ...

  10. 5种设置ASP.NET Core应用程序URL的方法

    默认情况下,ASP.NET Core应用程序监听以下URL: http://localhost:5000 https://localhost:5001 在这篇文章中,我展示了5种不同的方式来更改您的应 ...