13

私はJSだけでそのような要素を作成しようとしています:

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

そうするために、私はこのコードを試しました:

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

しかし、Chrome Dev Tools で実行すると、次の要素のみが作成されます。

<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として設定されていません。

さらに、ユーザーがtype などの のを変更した場合、属性を設定してもは変更されませんが、 valueプロパティを設定すると値が変更されることに注意してください。繰り返しますが、これは属性がプロパティと異なるためです。<input>

于 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 に答える