为啥 innerText,innerHTML 属性不适用于 javascript 中的输入标签?

Posted

技术标签:

【中文标题】为啥 innerText,innerHTML 属性不适用于 javascript 中的输入标签?【英文标题】:Why innerText,innerHTML property doesnt work on input tags in javascript?为什么 innerText,innerHTML 属性不适用于 javascript 中的输入标签? 【发布时间】:2021-05-22 17:46:31 【问题描述】:

所以我偶然发现了以下代码

<!DOCTYPE html>
<html>
<body>

Name: <input type="text" id="myText" value="Mickey">

<p>Click the button to change the value of the text field.</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction() 
  document.getElementById("myText").value = "Johnny Bravo";

</script>

</body>
</html>

之前没有在 javascripte 中使用过 .value,我想用 innerText 属性代替它,但它根本不起作用!

我有一个想法,可能&lt;input/&gt; 是一个自闭合标签,这就是为什么 innerText 不能在它之间插入?因此,在元素之间插入至少应该有 2 个标签

所以任何人都可以巩固这一点吗?或者如果不是,那么为什么 .innerText 不能在这里工作而不是 .value

【问题讨论】:

请注意,将 id 分配给元素会在 HTML5 中创建 window property of the same name。设置现有元素的id 属性还会创建同名的窗口属性。 (这是您之前提出并回答的已删除问题的正确答案 here。) 【参考方案1】:

因为inner 指的是“介于”元素的开始和结束标记之间的内容。例如:

<p>This is the "innerText" or "textContent"</p>

&lt;input&gt; 元素没有结束标记,因此它永远不能包含任何“内部”内容。对于这些元素,请使用 .value 属性访问其内容。

还有其他元素没有结束标记,但在以下情况下,这些元素没有innerText.value,因为它们并非旨在存储任何数据,仅具有语义或对 HTML 的结构影响:

&lt;area&gt; &lt;base&gt; &lt;br&gt; &lt;col&gt; &lt;colgroup&gt; 当 span 存在时 &lt;command&gt; &lt;embed&gt; &lt;hr&gt; &lt;img&gt; &lt;input&gt; &lt;keygen&gt; &lt;link&gt; &lt;meta&gt; &lt;param&gt; &lt;source&gt; &lt;track&gt; &lt;wbr&gt;

【讨论】:

以上是关于为啥 innerText,innerHTML 属性不适用于 javascript 中的输入标签?的主要内容,如果未能解决你的问题,请参考以下文章

为啥用 innerText 替换 InnerHTML 会导致性能下降 15 倍以上

innerHTML和innerText

Javascript中的innerText和InnerHTML

ASP.Net 控件的 InnerHTML 和 InnerText 属性之间的区别?

javascript,innerHTML或者innerText获取的内容是否字符串?为啥和另外一个字符串相比结果不对

innerHTML innerText的使用和区别