原文地址: https://www.xksblog.top/innerHTML-innerText-textContent-outerHTML-value.html
innerHTML、innerText、textContent、outerHTML和value,傻傻分不清楚?何时该用哪一个?虽然咱们经常使用的老是innerHTML,但在一些特殊状况下,正确的选择可以事半功倍,因此是时候对这几个小家伙仔细分分清楚了。html
废话很少说,先来看个例子:浏览器
<h1>innerHTML、innerText、textContent、outerHTML和value的区别</h1> <p id="content-wrapper">你是谁? <span>这是一个内嵌span测试</span> </p> <input id="name-input" type="text" placeholder="输入你的名字" value="xk"> <button id="send-btn">发送</button> <script> let contentWrapper = document.getElementById("content-wrapper") let nameInput = document.getElementById("name-input") let sendBtn = document.getElementById("send-btn") console.log("文本p的innerHTML是:" + contentWrapper.innerHTML) console.log("文本p的innerText是:" + contentWrapper.innerText) console.log("文本p的textContent是:" + contentWrapper.textContent) console.log("文本p的outerHTML是:" + contentWrapper.outerHTML) console.log("文本p的value是:" + contentWrapper.value) console.log("input的innerHTML是:" + nameInput.innerHTML) console.log("input的innerText是:" + nameInput.innerText) console.log("input的textContent是:" + nameInput.textContent) console.log("input的outerHTML是:" + nameInput.outerHTML) console.log("input的value是:" + nameInput.value) console.log("按钮button的innerHTML是:" + sendBtn.innerHTML) console.log("按钮button的innerText是:" + sendBtn.innerText) console.log("按钮button的textContent是:" + sendBtn.textContent) console.log("按钮button的outerHTML是:" + sendBtn.outerHTML) console.log("按钮button的value是:" + sendBtn.value) </script>
结果如图:app
看完了其实仍是一脸懵逼状。。有的值同样,有的甚至连值都不见了,什么鬼?好了总结一下:测试
innerHTML用来设置或获取成对标签之间的HTML内容,包括其中内嵌的子元素标签。spa
innerText也用来设置或获取成对标签之间的HTML内容,但它只关注文本信息,会省略内嵌的标签名。code
textContent也用来设置或获取成对标签之间的HTML内容,而且只关注文本信息。htm
outerHTML设置或获取元素及其内容的HTML形式。blog
value是表单元素特有的属性,一般input用的比较多,就是其中输入的值,也很好区别。ip
咱们还要再把这三个难兄难弟挑出来,从浏览器兼容的角度来区别一下:rem
innerHTML是符合W3C标准的属性,而innerText适用于IE浏览器,textContent适用于火狐浏览器。
这也就是为何咱们总能看到innerHTML,总对它偏心有加,毕竟是W3C的亲儿子嘛。
只不过到了今天,其他的浏览器也都实现了innerText和textContent,但要注意的是: