2012-05-08 36 views
7

"Cảnh báo: Trong DOM lõi 1, 2 và 3, Attr được kế thừa từ nút. Điều này không còn là trường hợp trong DOM4. Để mang lại việc triển khai Attr up to specification, công việc đang được tiến hành để thay đổi thành không Bạn không nên sử dụng bất kỳ thuộc tính hoặc phương thức Node nào trên các đối tượng Attr, bắt đầu từ Gecko 7.0 (Firefox 7.0/Thunderbird 7.0/SeaMonkey 2.4), những cái sẽ được loại bỏ các thông điệp cảnh báo đầu ra tới bàn điều khiển. nên xem xét lại mã của bạn. Xem các thuộc tính và phương thức không được chấp nhận để có danh sách đầy đủ. "DOM4: Các thuộc tính và phương thức không được chấp nhận, có nghĩa là gì?

Cuộn xuống trang, chúng ta có thể thấy thay thế cho nodeName và NodeValue, sử dụng Attr.name và Attr.value.

https://developer.mozilla.org/en/DOM/Attr#Deprecated_properties_and_methods

hiện nó thực sự có ý nghĩa gì đối với các phương pháp khác như thuộc tính hoặc childNodes? Tài liệu tham khảo cho biết nó không được dùng nữa nhưng chúng không cung cấp bất kỳ sự thay thế nào!

Phiên bản này không còn được dùng cho Thuộc tính nhưng nó cũng có thuộc tính cho nút không?

attr đối tượng: http://www.w3schools.com/jsref/dom_obj_attr.asp

Edit: nodeValue CHỈ sẽ không được chấp nhận Attributes (attr) kể từ attr sẽ không kế thừa từ một Node nữa trong DOM Level 4:

Dưới đây là một ví dụ nhanh chóng mà giúp tôi hiểu:

<div id="myAttribute">myTextNode</div> 

var myDiv = document.getElementById("myAttribute"); 

// If you want to get "myAttribute" from div tag 

alert(myDiv.attributes[0].value); 
// Correct way to get value of an attribute (displays "myAttribute") 
alert(myDiv.attributes[0].nodeValue); 
// Working too but deprecated method for Attr since it doesn't inherit from Node in DOM4 (.nodeValue is specific to a Node, not an Attribute) 

// If you want to get "myTextNode" from div tag 

alert(myDiv.childNodes[0].value); 
// Not working since .value is specific to an attribute, not a Node (displays "undefined") 
alert(myDiv.childNodes[0].nodeValue); 
// Working, .nodeValue is the correct way to get the value of a Node, it will not be deprecated for Nodes! (displays "myTextNode") 

lẽ điều này sẽ tránh nhầm lẫn cho người khác khi truy cập vào thuộc tính/Nodes :)

+0

tôi nghĩ rằng an toàn để giả định toàn bộ đối tượng Attr sẽ không được chấp nhận và tôi không thấy bất kỳ lý do gì để sử dụng nó. – jbabey

+0

@jbabey Đối tượng thuộc tính sẽ không bị phản đối và vì lý do sử dụng nó, tôi đã cập nhật bài viết của mình – baptx

Trả lời

6

Những gì họ đang nói là các đối tượng là Attr trường hợp (ví dụ: như được trả lại bởi Element.getAttributeNode()), được sử dụng để có các thuộc tính mà nó được thừa kế từ Node.

Tuy nhiên, vì đây không phải là trường hợp trong DOM4, nên họ đang cố gắng loại bỏ thừa kế này. Bởi vì điều này, khi bạn bây giờ có được một thể hiện của một đối tượng Attr, các thuộc tính được liệt kê trong the deprecated list sẽ hoạt động như chúng được ghi lại.

Câu hỏi lớn: Phiên bản này không còn được dùng cho Thuộc tính nhưng nó cũng có thuộc tính cho nút không?: Không, chúng không được chấp nhận. Bạn có thể xem danh sách các thuộc tính Node có từ trang tài liệu it's own.

Attr đối tượng không được sử dụng nhiều (bao giờ?); bạn có chắc chắn điều này liên quan đến bạn?

+0

Làm cách nào để biết liệu chúng tôi có đang sử dụng Attr thay cho Nút không? Khi tôi đang sử dụng document.getElementsByTagName ("script") [2] .attributes [0] .nodeValue Bảng điều khiển Firebug nói "Sử dụng thuộc tính" thuộc tính nodeValue không được chấp nhận. Hãy sử dụng giá trị thay thế. " Nhưng bạn nói nodeValue không được dùng nữa cho Attr, đó là lý do tôi hỏi. – baptx

+1

Đó là một đối tượng Attr mà tôi đang truy cập http://www.w3schools.com/jsref/prop_attr_name.asp đó là lý do tại sao nó yêu cầu .value thay vì .nodeValue Tôi nghĩ rằng – baptx

+1

Thanks @Matt Tôi đã hiểu câu trả lời của bạn tốt hơn sau đọc lại – baptx

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