Javascript JS-从阵列中删除元素(使用拼接的问题)
我正在为我的个人网站构建一个编辑查看器。我有一个数组,用于收集页面中的所有文本框/文本区域(基于它们的类)。然后通过使用按钮,我让用户从一个编辑移动到另一个编辑。当按下按钮时,我需要遍历“编辑”对象的数组 使用我在上一个溢出线程中找到的伟大技巧,我将从数组的顶部循环返回。但是,我遇到了一个错误“myFunc error=TypeError:Object不支持属性或方法‘splice’”。我做错了什么Javascript JS-从阵列中删除元素(使用拼接的问题),javascript,jquery,arrays,Javascript,Jquery,Arrays,我正在为我的个人网站构建一个编辑查看器。我有一个数组,用于收集页面中的所有文本框/文本区域(基于它们的类)。然后通过使用按钮,我让用户从一个编辑移动到另一个编辑。当按下按钮时,我需要遍历“编辑”对象的数组 使用我在上一个溢出线程中找到的伟大技巧,我将从数组的顶部循环返回。但是,我遇到了一个错误“myFunc error=TypeError:Object不支持属性或方法‘splice’”。我做错了什么 var editsArray = document.getElementsByClassName
var editsArray = document.getElementsByClassName("recent_change");
// go backwards through the array
for(var i = editsArray.length -1; i >= 0 ; i--){
// check to ensure it is not a 'problem_box'
if(editsArray[i].name == 'problem_box'){
// remove that item from array
editsArray.splice(i, 1);
}
}
我知道我将元素收集到数组中的方法与我迭代这些编辑的代码之前的工作方式相同。我现在要回去“清理”收集到数组中的内容,并遇到上面提到的错误
我不想删除从实际页面收集的对象,我只是想从数组中删除对这些对象的引用
const editsArray = Array.from(document.getElementsByClassName("recent_change")).
filter((node) => node.name !== 'problem_box')
如果无法使用ES6,请将Array.from替换为Array.prototype.slice,将arrow函数替换为normal函数。这不是数组;这是HTMLCollection。试试这个► <代码>var actualArray=[].slice.call(editsArray)代码>,然后更改代码以处理
实际光线
。那可能有用。或者新的。你也可以用editsArray=Array.from(editsArray.filter)(函数(el){return el.name!='problem_box'})
@François Wahl::在上述循环的上下文中,这种删除方法是否真的有效?在某些情况下,我们可能需要多次输入if语句。@根据您的建议,我已经这样做了,将from“editsArray”变量重命名为包括“collection”在内的内容以使其正确。var allEditsArray=Array.from(collectionUnclean).filter(函数(el){return el.name!='problem\u box'})执行此操作时,我收到一个错误“对象不支持属性或方法'from'”