我正在使用这个解决方案:(来自: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:警告 - 删除属性类型与其从父类(super class) Element 覆盖的属性类型不匹配
原始:函数(this:元素):未定义
覆盖:函数(this:HTMLSelectElement,数字):未定义
HTMLSelectElement.prototype.remove = function(index) {};
如何清除此警告?或者我应该对 element.remove 使用另一种方法?
最佳答案
编译器警告您,继承自 Element
的类已具有名为 remove
的方法,并且其签名与您的签名不匹配。在这种情况下,HTMLSelectElement .
如果您忽略该警告,您的删除方法将无法对 HTMLSelectElement
元素正确运行 - 因为该函数执行的行为与您定义的行为非常不同。
@php_nub_qq 的评论是正确的。选择一个不与继承链中现有对象冲突的方法名称。
关于javascript - Element.prototype.remove - 关闭编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29769673/