为啥 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 属性代替它,但它根本不起作用!
我有一个想法,可能<input/>
是一个自闭合标签,这就是为什么 innerText 不能在它之间插入?因此,在元素之间插入至少应该有 2 个标签
所以任何人都可以巩固这一点吗?或者如果不是,那么为什么 .innerText 不能在这里工作而不是 .value
【问题讨论】:
请注意,将 id 分配给元素会在 HTML5 中创建 window property of the same name。设置现有元素的id
属性还会创建同名的窗口属性。 (这是您之前提出并回答的已删除问题的正确答案 here。)
【参考方案1】:
因为inner
指的是“介于”元素的开始和结束标记之间的内容。例如:
<p>This is the "innerText" or "textContent"</p>
<input>
元素没有结束标记,因此它永远不能包含任何“内部”内容。对于这些元素,请使用 .value
属性访问其内容。
还有其他元素没有结束标记,但在以下情况下,这些元素没有innerText
或.value
,因为它们并非旨在存储任何数据,仅具有语义或对 HTML 的结构影响:
<area>
<base>
<br>
<col>
<colgroup>
当 span 存在时
<command>
<embed>
<hr>
<img>
<input>
<keygen>
<link>
<meta>
<param>
<source>
<track>
<wbr>
【讨论】:
以上是关于为啥 innerText,innerHTML 属性不适用于 javascript 中的输入标签?的主要内容,如果未能解决你的问题,请参考以下文章
为啥用 innerText 替换 InnerHTML 会导致性能下降 15 倍以上
Javascript中的innerText和InnerHTML
ASP.Net 控件的 InnerHTML 和 InnerText 属性之间的区别?