我正在使用此解决方案:(来自:Remove element by id)
Element.prototype.remove = function() {
this.parentElement.removeChild(this);
}
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
for(var i = 0, len = this.length; i < len; i++) {
if(this[i] && this[i].parentElement) {
this[i].parentElement.removeChild(this[i]);
}
}
}
我在闭包编译器中收到以下警告:
externs.zip//w3c_dom2.js:793: WARNING - mismatch of the remove property type and the type of the property it overrides from superclass Element
original: function (this:Element): undefined
override: function (this:HTMLSelectElement, number): undefined
HTMLSelectElement.prototype.remove = function(index) {};
如何清除此警告?或者我应该为element.remove使用另一种方法吗?
答案 0 :(得分:3)
编译器警告您,继承自Element
的类已经有一个名为remove
的方法,并且它的签名与您的签名不匹配。在这种情况下,HTMLSelectElement。
如果您忽略该警告,您的删除方法将无法正常运行HTMLSelectElement
元素 - 因为该函数执行的行为与您定义的完全不同。
@php_nub_qq的评论是正确的。选择一个与继承链中的现有对象不冲突的方法名称。