DOM 元素删除的 Polyfill?

Polyfill for DOM element delete?

我需要为 DOM 元素删除创建 polyfill。无法理解,我做错了什么。 deleteElements() 方法必须删除当前元素。

<div>1</div>
<div>2</div>
<div>3</div>

<script>
  if (document.documentElement.deleteElements === undefined) {
    object.defineProperty(Element.prototype, 'deleteElements', {
        get: function() {
            var elem = this.firstChild;
            delete elem;
            return
        },

        set: function(variable) {
            this.firstChild = variable;
        }

    });
  }

  var elem = document.body.children[0];

  elem.deleteElements(); // <-- call must delete an element

</script>

这里有几个问题:

  1. 您正在用 getter 和 setter 定义 属性,然后将 属性 用作函数,但是 getter 不是 return 函数。您几乎肯定不想使用 getter 和 setter.

  2. 正如我在 , delete has nothing to do with removing elements from the DOM. delete 中所说,从对象中删除 属性。它与从 DOM.

  3. 中删除元素无关

如果您想删除元素的第一个子元素而不使用原生 remove,您可以这样做:

this.removeChild(this.firstChild);

(也不需要在函数末尾使用 return,除非您 return 正在输入一个值。)

如果你想在 Element.prototype 上定义一个新方法,你可以这样做:

Object.defineProperty(Element.prototype, "deleteElements", {
    value: function() {
        // ...code here...
    },
    writable: true,    // These are the values for the
    enumerable: true,  // `remove` property on `Element.prototype`
    configurable: true // on browsers that property support it
});