input
元素的值不会反映在其value
属性(或任何其他属性)中,尽管其名称如此.value
属性提供输入的default value,而不是其当前值,即使HTMLInputElement
实例的value
property提供的是当前值.这是DOM令人困惑的事情之一.以下是细目:
Item |
Attribute |
Property |
Default value |
value |
defaultValue |
Current value |
none |
value |
如果您想要一个能够捕获用户在input
个元素上的当前输入文本(以及他们在select
个元素上的当前选定项)的HTML字符串,则必须自己实现该功能,可能需要使用data-*
个属性.
下面是input
个元素的简单示例:
// Respond to the `input` event by updating an attribute on the
// input element
document.addEventListener("input", ({target}) => {
if (target instanceof HTMLInputElement) {
target.setAttribute("data-current-value", target.value);
}
});
// Hook up the button to show the HTML:
document.querySelector("[value='Show HTML']").addEventListener("click", () => {
for (const input of document.querySelectorAll("input[type=text]")) {
console.log(input.outerHTML);
}
});
A: <input type="text" name="a">
<br>
B: <input type="text" name="b">
<br>
<div><input type="button" value="Show HTML"></div>
在该示例中,我将在值更改时获取这些值,但您也可以在克隆文档之前执行此操作.