13

我试图只用 JS 创建这样的元素:

<input type="text" value="default">

为此,我尝试了以下代码:

var mi = document.createElement("input");
mi.type= "text"
mi.value = "default"

但是当我在 Chrome 开发工具中运行它时,它只会创建这个元素:

<input type="text">

我错过了什么?

4

3 回答 3

30

设置HTMLElement的属性与将其属性设置为同一事物并不完全相同。

您很可能想使用element.setAttribute

var mi = document.createElement("input");
mi.setAttribute('type', 'text');
mi.setAttribute('value', 'default');

现在你可以看到

new XMLSerializer().serializeToString(mi);
// "<input type="text" value="default">"

在您的示例中,显示的<input>仍然是default,只是没有设置为属性

进一步注意,如果用户更改了 的<input>例如类型,设置属性将不再更改,但设置value属性仍会更改它。同样,这是因为属性与属性不同。

于 2013-06-21T11:33:42.190 回答
4
var i = document.createElement("input"); //input element, text
i.setAttribute('type',"text");
i.setAttribute('name',"username");
i.setAttribute('value',"default");
于 2013-06-21T11:34:19.337 回答
1

我认为您缺少 ; 在“文本”之后。

于 2013-06-21T11:33:42.427 回答