不推荐使用removeChild,textContent和appendChild。备择方案?

时间:2016-02-26 06:15:04

标签: javascript

我根据以下链接提出这个问题:https://developer.mozilla.org/en-US/docs/Web/API/Attr

我看到很多开发人员使用这些方法,老实说,我并不完全确定他们是否真的被弃用,或仅仅是在某个特定环境中。无论哪种方式,它都会将它们列为已弃用,这就是为什么我要问:有哪些有效和最新的替代品?专门针对:

removeChild,textContent,appendChild。甚至不推荐使用insertBefore。

1 个答案:

答案 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>

的HTML

然而,对于属性来说,这并没有多大意义。属性基本上只是附加到节点的字符串。与属性一起使用的常见操作是namevalue。例如:

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属性或方法。