2013-06-21 52 views
6

我试着去创造只用JS这样的元素创建输入字段:使用纯JavaScript

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

要做到这一点,我想这样的代码:

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

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

<input type="text"> 

我错过了什么?

+0

你可以把你正在使用的代码插入到DOM的代码? –

+1

出现了什么问题,该值是否显示在页面上或提交? – Bergi

回答

19

设置一个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,它只是ISN” t设为属性

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

+1

+1表示清楚说明 –

+2

注意:要设置或修改当前值,应尽可能使用属性。例如,由于浏览器和环境之间的不一致,使用'elt.value = val'而不是'elt.setAttribute('value',val)',最值得注意的是XUL和IE(使用'class'代替IE 'className')。如果您想了解/了解更多,请做一些搜索。 +1。尽管OPs代码应该可以正常工作:[jsfiddle](http://jsfiddle.net/Xotic750/cD8zZ/) – Xotic750

0

我想你错过了;在“文本”之后。

+4

分号不是必需的...但优先 – claustrofob

2
var i = document.createElement("input"); //input element, text 
i.setAttribute('type',"text"); 
i.setAttribute('name',"username"); 
i.setAttribute('value',"default");