我根据以下链接提出这个问题:https://developer.mozilla.org/en-US/docs/Web/API/Attr
我看到很多开发人员使用这些方法,老实说,我并不完全确定他们是否真的被弃用,或仅仅是在某个特定环境中。无论哪种方式,它都会将它们列为已弃用,这就是为什么我要问:有哪些有效和最新的替代品?专门针对:
removeChild,textContent,appendChild。甚至不推荐使用insertBefore。
答案 0 :(得分:2)
我的猜测是你混淆了node
个对象和attribute
个对象。您命名的函数通常与前者一起使用,但不与后者一起使用。 MDN文章仅描述attribute
个对象。
了解更多信息:
<div>
是一个节点,它可以有一个属性data-foo="bar"
。
通常将子项附加或修改文本到节点。例如,给定:
var node = document.createElement('div');
node.innerHTML = '<p>Hello</p><p> World</p>';
node.removeChild(node.firstChild);
会生成<div><p> World</p></div>
然而,对于属性来说,这并没有多大意义。属性基本上只是附加到节点的字符串。与属性一起使用的常见操作是name
和value
。例如:
var node = document.createElement('div');
node.setAttribute('data-foo', 'bar');
var attr = node.getAttributeNode('data-foo');
console.log(attr.name); // prints 'data-foo'
console.log(attr.value); // prints 'bar'
console.log(typeof attr); // prints 'object'
至少在个人方面,我很少使用Attr
对象,而node.getAttribute('data-foo')
会返回string
bar
,这足以满足我的需求。< / p>
至于为什么这些方法首先存在于attr
个对象上,我将简单地从您链接的MDN文章中复制/粘贴:
警告:在DOM Core 1,2和3中,Attr继承自Node。在DOM4中不再是这种情况。为了使Attr的实现符合规范,正在进行将其更改为不再继承Node的工作。您不应该在Attr对象上使用任何Node属性或方法。