<input> 在 HTML 中没有价值,但在 JavaScript 中有价值? [复制]

Posted

技术标签:

【中文标题】<input> 在 HTML 中没有价值,但在 JavaScript 中有价值? [复制]【英文标题】:<input> has no value in HTML but does in JavaScript? [duplicate] 【发布时间】:2021-11-07 23:52:28 【问题描述】:

我在页面上找到了一个&lt;input type="text" ... 元素,$('thatElement').val()$('thatElement')[0].value 返回值,该值显示在渲染输出中,但元素本身没有value="..." 属性。

一个输入元素的html中怎么可能没有value属性,但它仍然有值并且仍然显示它的值?

浏览器控制台:


> $('thatElement')[0].value
'The text that the page shows inside of the input'
> $('thatElement')[0].outerHTML
'<input autocomplete="off" type="text" readonly spellcheck="false">'

【问题讨论】:

取决于您的比较方式。您是否有机会比较页面源代码(不是通过任何浏览器中的开发工具)和 JS 评估?因为源代码(通过右键单击 -> 显示源代码)只会显示最初来自服务器的内容,从那时起很可能已经更改了。 请提供minimal reproducible example @ArSeN 检查元素,甚至.outerHTML 显示没有值属性 Attributes are not the same as properties。该属性仅显示初始值并且(通常)永远不会改变。该属性具有当前值,但不显示在 HTML 中。 【参考方案1】:

文档的来源和它的 DOM 表示是有区别的。源文件是静态的,不会更改。 DOM 可能会改变。我认为这取决于你如何操作它。

在此示例中,输入值已设置但 DOM 未更新:(运行并检查结果)

document.querySelector('input').value = 42;
&lt;input /&gt;

在这个例子中,输入和 DOM 都被更新了:

document.querySelector('input').setAttribute('value', 'foobar');
&lt;input /&gt;

【讨论】:

以上是关于<input> 在 HTML 中没有价值,但在 JavaScript 中有价值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在实体框架中设置 HTML <input> step 属性

html中怎么设置框内打勾

HTML5 用鼠标在可拖动的 div 上选择 <input> 中的文本

把HTML5的手机网站嵌入安卓APP中,发现<input type='file' />的上传按钮功能失效,点击没有任何反应?

9.02

没有 <form> 的 <input> 格式是不是正确?