2013-06-21 53 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");