用于删除DOM元素的Polyfill?

时间:2018-01-21 12:38:44

标签: javascript function polyfills

我需要为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 个答案:

答案 0 :(得分:1)

那里有几个问题:

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

  2. 正如我在my comment中所说,delete与从DOM中删除元素无关。 delete从对象中删除属性。它与从DOM中删除元素无关。

  3. 如果您想在不使用原生remove的情况下删除元素的第一个子元素,则执行以下操作:

    this.removeChild(this.firstChild);
    

    (除非你要返回一个值,否则函数末尾也不需要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
    });