2012-05-08 1 views
7

Предупреждение: в DOM Core 1, 2 и 3, Attr унаследовано от узла. Это больше не относится к DOM4. Чтобы довести реализацию Attr до спецификации, ведется работа по ее изменению более длинный наследовать от узла. Нельзя использовать какие-либо свойства или методы узла в объектах Attr. Начиная с Gecko 7.0 (Firefox 7.0/Thunderbird 7.0/SeaMonkey 2.4), те, которые будут удалены, выводят предупреждающие сообщения на консоль. следует соответствующим образом пересмотреть свой код. См. «Устаревшие свойства и методы для полного списка».DOM4: Устаревшие свойства и методы, что это значит?

Прокрутка вниз страницы, мы можем увидеть замены для nodeName и NodeValue, используя Attr.name и Attr.value.

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

Что это действительно означает для других методов, таких как атрибуты или ChildNodes? Ссылка говорит, что она устарела, но они не дают никакой замены!

Это устарело для атрибута, но оно также для узла?

атр объект: http://www.w3schools.com/jsref/dom_obj_attr.asp

Edit: nodeValue ТОЛЬКО устареет для атрибутов (атр), поскольку Attr не унаследуют от узла больше в DOM Level 4:

Вот краткий пример, который помог мне понять:

<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") 

Может быть, это поможет избежать путаницы с другим при доступе атрибутов/Узлов :)

+0

Я думаю, можно с уверенностью предположить, что весь объект Attr будет устаревшим, и я не вижу причин для его использования. – jbabey

+0

@jbabey Объект атрибута не будет устаревшим и по причине его использования Я обновил свой пост – baptx

ответ

6

То, что они говорят, это объекты, которые были экземплярами Attr (например, такие как те, которые возвращены Element.getAttributeNode()), используемые для получения свойств, которые он унаследовал от Node.

Однако, поскольку это не так в DOM4, они пытаются удалить это наследование. Из-за этого, когда вы теперь получаете экземпляр объекта Attr, свойства, перечисленные в the deprecated list, будут вести себя так, как они документированы.

Большой вопрос: Это устарело для атрибута, но оно для узла тоже?: Нет, они не устарели. Вы можете просмотреть список свойств Node с страницы it's own.

Attr объекты не используются много (никогда?) в любом случае; Вы уверены, что это касается вас?

+0

Как узнать, используем ли мы Attr вместо Node? Когда я использую document.getElementsByTagName ("script") [2] .attributes [0] .nodeValue Firebug console говорит, что атрибут nodeValue атрибута атрибута устарел. Используйте значение вместо этого. " Но вы говорите, что nodeValue устарел только для Attr, вот почему я спрашиваю. – baptx

+1

Это объект Attr, к которому я обращаюсь http://www.w3schools.com/jsref/prop_attr_name.asp, поэтому он запрашивает .value вместо .nodeValue. Я думаю, – baptx

+1

Спасибо @Matt. Я лучше понимаю ваш ответ после Перечитывая – baptx