- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个由 Javascript 填充的下拉列表。
在决定加载时显示的默认值时,我意识到以下属性显示的值完全相同:
innerText
innerHTML
label
text
textContent
outerText
我自己的研究显示了基准测试或其中一些(但不是全部)之间的比较。
我可以根据自己的常识选择 1 或另一个,因为它们提供相同的结果,但是,我担心如果数据发生变化,这不是一个好主意。
我的发现是:
innerText
将按原样显示值并忽略可能包含的任何 HTML 格式innerHTML
将显示值并应用任何 HTML 格式label
似乎与 innerText
相同, 所以我看不出区别text
似乎与 innerText
相同但 jQuery 速记版本textContent
看起来与 innerText
相同但保留格式(例如 \n
)outerText
似乎与 innerText
相同我的研究只能带我走这么远,因为我只能测试我能想到的或阅读已发表的内容,但任何人都可以确认我的研究是否正确以及 label
是否有任何特别之处|和 outerText
?
最佳答案
来自 MDN :
Internet Explorer introduced element.innerText. The intention is pretty much the same [as textContent] with a couple of differences:
Note that while textContent gets the content of all elements, including
<script>
and<style>
elements, the mostly equivalent IE-specific property, innerText, does not.innerText is also aware of style and will not return the text of hidden elements, whereas textContent will.
As innerText is aware of CSS styling, it will trigger a reflow, whereas textContent will not.
所以 innerText
将不包括被 CSS 隐藏的文本,但 textContent
会的。
innerHTML returns the HTML as its name indicates. Quite often, in order to retrieve or write text within an element, people use innerHTML. textContent should be used instead. Because the text is not parsed as HTML, it's likely to have better performance. Moreover, this avoids an XSS attack vector.
如果您错过了,让我再重复一遍:不要使用.innerHTML
除非您特别打算在元素中插入 HTML 并已采取必要的预防措施以确保您插入的 HTML 不包含恶意内容。如果只想插入文本,请使用 .textContent
或者,如果您需要支持 IE8 及更早版本,请使用功能检测在 .textContent
之间切换和 .innerText
.
有这么多不同属性的一个主要原因是不同的浏览器最初对这些属性有不同的名称,并且仍然没有对所有这些属性的完整的跨浏览器支持。如果你正在使用 jQuery,你应该坚持 .text()
因为这是为了消除跨浏览器的差异而设计的。*
对于其他一些:outerHTML
与innerHTML
基本相同, 除了它包含它所属元素的开始和结束标记。我似乎找不到关于 outerText
的太多描述根本。我认为这可能是一个模糊的遗留属性,应该避免。
关于javascript - innerText vs innerHTML vs label vs text vs textContent vs outerText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24427621/
通过网络搜索后,我了解了 innerHTML 和 outerHTML 之间的区别。 但是我很难理解 innerText 和 outerText 之间的区别。两者在我看来几乎相同。 谁能用一个漂亮的插图
我有一个由 Javascript 填充的下拉列表。 在决定加载时显示的默认值时,我意识到以下属性显示的值完全相同: innerText innerHTML label text textContent
我是一名优秀的程序员,十分优秀!