我需要为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>
答案 0 :(得分:1)
那里有几个问题:
您正在使用getter和setter定义属性,然后将该属性用作函数,但getter不返回函数。你几乎肯定不想使用getter和setter。
正如我在my comment中所说,delete
与从DOM中删除元素无关。 delete
从对象中删除属性。它与从DOM中删除元素无关。
如果您想在不使用原生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
});