textContent、innerText、innerHTML的区别和差异
先看看下面这个demo,不言自明:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<style>
button{
border:1px solid red;
}
</style>
<div class="contain">
北京上海广州<span>深圳厦门</span>陕西西安
<p>台湾香港澳门</p>
</div>
<button οnclick="myFunction()">我是按钮</button>
<script>
function myFunction(){
console.log(event.type);
}
let container = document.querySelector("body");
console.log("textContent的内容是:",container.textContent);
console.log("innerText的内容是:",container.innerText);
console.log("innerHTML的内容是:",container.innerHTML);
</script>
</body>
</html>1、通过textContent属性可以获取指定节点的文本,以及该指定节点所包含后代节点中文本内容,也包括<script>和<style>元素中的内容(这里的不是文本而是css样式代码和JavaScript代码)
2、IE引入了node.innerText属性,该属性会获取指定节点的文本以及后代节点中的文本,不能获取<style>和<script>中的内容。
3、innerHTML顾名思义就是获取指定元素内的HTML内容。
textContent、innerText、innerHTML的区别和差异
1 、textContent属性可以获取指定节点的文本及其后代节点中文本内容,也包括<script>和<style>元素中的内容; innerText也是获取指定节点的文本及其后代节点中文本内容,但不能获取<script>和<style>元素中的内容。 innerHTML是获取HTML文本结构内容。
2、textContent会获取display:none的节点的文本;而innerText好像会感知到节点是否呈现一样,不作返回。 也就是说,textContent能够获取元素的所有子节点上的文本,不管这个节点是否呈现;而innerText只返回呈现到页面上的文本。
3、要注意设置文本时被替换的可不只是文本了;这时textContent 、innerText属性相当于innerHTML属性,会把指定节点下的所有子节点也一并替换掉。
4、由于 innerText 受 CSS 样式的影响,它会触发重排(reflow),但 textContent 不会。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!