7

“警告:在 DOM Core 1、2 和 3 中,Attr 继承自 Node。在 DOM4 中不再是这种情况。为了使 Attr 的实现符合规范,正在努力将其更改为不再继承自 Node . 您不应该在 Attr 对象上使用任何 Node 属性或方法。从 Gecko 7.0 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4) 开始,将要删除的那些将向控制台输出警告消息。您应该修改您的代码相应地。有关完整列表,请参阅弃用的属性和方法。”

向下滚动页面,我们可以看到 nodeName 和 NodeValue 的替换,使用 Attr.name 和 Attr.value。

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

对于属性或 childNodes 等其他方法,它到底意味着什么?参考资料说它已被弃用,但他们没有提供任何替代品!

它已被 Attribute 弃用,但它也适用于 Node 吗?

属性对象:http ://www.w3schools.com/jsref/dom_obj_attr.asp

编辑:nodeValue 将仅被弃用为属性(Attr),因为 Attr 将不再从 DOM 级别 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")

也许这会在访问属性/节点时避免其他人混淆:)

4

1 回答 1

6

他们所说的是作为Attr实例的对象(例如,由 . 返回的对象Element.getAttributeNode())曾经具有从 . 继承的属性Node

然而,由于在 DOM4 中不是这种情况,他们正试图移除这种继承。因此,当您现在获取对象的实例时,已弃用列表中Attr列出的属性将按照文档中的方式运行。

最大的问题:属性已被弃用,但它也适用于节点吗?: 不,它们没有被弃用。Node您可以从它自己的文档页面查看属性列表。

Attr无论如何,对象的使用并不多(曾经?);你确定这与你有关吗?

于 2012-05-08T13:11:58.100 回答