2013-06-21 26 views
6

Im cố gắng để tạo ra yếu tố như vậy chỉ với JS:Tạo một lĩnh vực đầu vào sử dụng tinh khiết Javascript

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

Để làm như vậy, tôi đã cố gắng mã này:

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

Nhưng khi tôi chạy nó trong Chrome Công cụ tìm kiếm, công cụ này chỉ tạo phần tử này:

<input type="text"> 

Tôi đang thiếu gì?

+0

Bạn có thể đặt mã bạn đang sử dụng để chèn phần tử vào DOM không? –

+1

Có gì sai, giá trị không hiển thị trong trang hoặc khi gửi? – Bergi

Trả lời

19

Thiết lập một tài sản của một HTMLElement không phải là chính xác giống như thiết lập nó thuộc tính để điều tương tự.

Bạn rất có thể muốn sử dụng element.setAttribute

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

Bây giờ bạn có thể thấy

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

Trong ví dụ của bạn, giá trị hiển thị bởi <input> vẫn sẽ default, nó chỉ isn' t được đặt làm thuộc tính .

Lưu ý thêm rằng nếu người dùng thay đổi giá trị của <input>, ví dụ: các loại vào đó, đặt thuộc tính sẽ không thay đổi giá trị nữa, nhưng đặt thuộc tính giá trị sẽ vẫn thay đổi. Một lần nữa, điều này là do thuộc tính khác với thuộc tính .

+1

+1 cho giải thích rõ ràng –

+2

Lưu ý: Để đặt hoặc sửa đổi các giá trị hiện tại, bạn nên sử dụng các thuộc tính khi có thể. Ví dụ, sử dụng 'elt.value = val' thay cho' elt.setAttribute ('value', val) ', do sự mâu thuẫn giữa các trình duyệt và môi trường, đáng chú ý nhất là XUL và IE (IE với việc sử dụng' class' thay vì 'className'). Thực hiện một tìm kiếm nhỏ nếu bạn muốn biết/hiểu thêm. +1. Mã OPS nên hoạt động tốt: [jsfiddle] (http://jsfiddle.net/Xotic750/cD8zZ/) – Xotic750

0

Tôi nghĩ bạn đang thiếu; sau "văn bản".

+4

dấu chấm phẩy không bắt buộc ... nhưng đã được tiền tố – claustrofob

2
var i = document.createElement("input"); //input element, text 
i.setAttribute('type',"text"); 
i.setAttribute('name',"username"); 
i.setAttribute('value',"default"); 
Các vấn đề liên quan