2011-10-06 28 views
7

Trong javascript, chúng ta có thể tạo ra một phần tử DOM mới theo các cách sau ...Sử dụng createAttribute so với chỉ thiết lập thuộc tính trực tiếp?

Bằng việc sử dụng createAttribute() + setAttributeNode() phương pháp dom:

var input = document.createElement("input"), 
    type = document.createAttribute("type"); 

type.nodeValue = "text"; 
input.setAttributeNode(type); 
container.appendChild(input); 

hoặc bằng cách chỉ cần thiết lập các thuộc tính trực tiếp :

var input = document.createElement("input"); 

input.type = "text"; 
container.appendChild(input); 

Thứ hai có thể kết thúc là mã ít hơn nhiều, ngay cả khi chỉ có một vài thuộc tính cho mỗi phần tử.

Câu hỏi: có ai chạy trên bất kỳ hạn chế nào của phương pháp sau không (thiết lập thuộc tính trực tiếp)?

Tôi đã thử nghiệm điều này trên một số trình duyệt (phiên bản mới nhất, IE, Safari, Opera, IE cũ - thậm chí IE6 đã hoạt động) và trên thử nghiệm cơ bản (chèn đầu vào văn bản có loại, tên và thuộc tính maxLength) . Here's the fiddle nếu có ai cần.

Trả lời

9
document.createAttribute 
document.createAttributeNS 
element.getAttributeNode 
element.getAttributeNodeNS 
... and a lot of others 

sẽ hết hạn vào DOM4, do đó, không sử dụng nó, chỉ cần thiết lập với setAttribute ("tên", "giá trị")

http://www.w3.org/TR/dom/#element

someinput.type là khác nhau về cơ bản là lối tắt để thực hiện

setAttribute("type","text"); 
getAttribute("text"); 

hy vọng điều này sẽ hữu ích!

element._some_attribute_ is not available for all attributes, just some: 
element.dir 
element.lang 
element.id 
...etc 
+2

Không hoàn toàn đúng khi sử dụng 'setAttribute()' và 'getAttribute()' luôn tương đương với việc sử dụng thuộc tính tương ứng. Ví dụ, thuộc tính 'value' (luôn luôn phản ánh giá trị hiện tại của một đầu vào) tồn tại riêng biệt với thuộc tính' value' (chỉ đại diện cho giá trị ban đầu). Một ví dụ rõ ràng hơn là thuộc tính 'style', chứa một chuỗi, so với thuộc tính' style', là một đối tượng 'CSSStyleDeclaration' với các thuộc tính riêng lẻ cho mỗi thuộc tính kiểu dáng riêng lẻ. –

+0

tôi đã nói chúng ở đâu tương đương? : P –

+0

Điểm công bằng, bạn đã không làm vậy. Bạn không chắc chắn điều gì đã nhắc nhận xét của tôi ngay bây giờ. Tuy nhiên, –

Các vấn đề liên quan