我在页面上找到了一个元素,$(\'thatElement\').val()和$(\'thatElement\')[0].value返回了该元素的值,该值在渲染的输出中显示,但在元素本身上却没有value=\"...\"属性。\n为什么一个输入元素的HTML中没有value属性,但它仍然有值并显示其值?\n浏览器控制台:\n
元素,$(\'thatElement\').val()和$(\'thatElement\')[0].value返回了该元素的值,该值在渲染的输出中显示,但在元素本身上却没有value=\"...\"属性。\n为什么一个输入元素的HTML中没有value属性,但它仍然有值并显示其值?\n浏览器控制台:\n
$(\'thatElement\').val()
$(\'thatElement\')[0].value
value=\"...\"
> $('thatElement')[0].value '页面显示在输入框内的文本' > $('thatElement')[0].outerHTML ''
在HTML中,元素没有value属性的值,但在JavaScript中却有。这个问题出现的原因是因为HTML文档和它的DOM表示是有区别的。HTML文档是静态的,不会改变,而DOM可能会改变。在第一个示例中,虽然设置了元素的value属性的值为42,但是DOM并没有更新。而在第二个示例中,使用setAttribute()方法来更新元素的value属性值为'foobar',同时DOM也被更新了。
解决这个问题的方法是使用setAttribute()方法来设置元素的value属性的值,而不是直接修改value属性。这样可以确保DOM也会相应地更新。
用户名或电子邮箱地址
密码