为啥更改 innerText 值也会更改 innerHTML?

Posted

技术标签:

【中文标题】为啥更改 innerText 值也会更改 innerHTML?【英文标题】:Why does changing innerText value also changes innerHTML?为什么更改 innerText 值也会更改 innerHTML? 【发布时间】:2014-03-26 19:13:40 【问题描述】:

我有一个创建按钮的 asp.net 代码,如下所示:

<a href="#" id="button1" title="Maximize" onclick="function1('span1')" class="button"><span id="span1" class="iconMaximizeLightText">Maximize</span></a>

现在在 javascript 文件中,我在 function1 函数中执行以下操作:

document.getElementById("button1").innerText = "Minimize";
document.getElementById("button1").value = "Minimize";
document.getElementById("button1").className = "iconMinimizeLightText";

我注意到在以下行之前:“document.getElementById("button1").innerText = "Minimize";"执行"document.getElementById("button1").innerhtml" 中的值是

document.getElementById("button1").innerHTML = "<span id=span1 class=iconMaximizeLightText>Maximize</span>"

但在该行执行后,"document.getElementById("button1").innerHTML" 中的值是

document.getElementById("button1").innerHTML = "Minimize"

我只更改了 innerText 值,为什么 innerHTML 值会发生变化?

提前致谢。

附:抱歉,这可能是一个愚蠢的问题,但我几周后才开始学习这门语言。

【问题讨论】:

见Difference between innerText and innerHTML in javascript 【参考方案1】:

innerTextinnerHTML 都设置元素的 HTML。不同之处在于innerText——顺便说一下,你可能想使用textContent——将转义字符串,这样你就不能在其中嵌入HTML内容。

例如,如果您这样做:

var div = document.createElement('DIV');
div.innerText = '<span>Hello</span>';
document.body.appendChild(div);

那么您实际上会在屏幕上看到字符串"&lt;span&gt;Hello&lt;/span&gt;",而不是"Hello"(在跨度内)。

innerText 还有其他一些微妙之处,在上面引用的 MDN 文章中进行了介绍。

【讨论】:

以上是关于为啥更改 innerText 值也会更改 innerHTML?的主要内容,如果未能解决你的问题,请参考以下文章

为啥即使没有 SVN 更改,Jenkins 也会触发 IVY 构建?

为啥即使禁用缓存,服务器也会忽略代码文件中的更改?

如何在不更改子元素的情况下更改元素 innerText

无法更改 InnerText 0r InnerHTML

Pythons HTMLParser 可以编辑/更改 HTML 元素 innerText 还是只读取它

为啥即使我没有将 vuex 状态绑定到任何 html 输入元素,我的 vuex 状态也会在更改组件级别状态时发生变化?