我有以下代码,我似乎无法找到从thumbs对象中删除mainThumbs的方法。我尝试过splice(0,(mainThumbs.length - 1)),shift,删除thumb [0],似乎没有任何效果。这些函数呈现以下错误'Uncaught TypeError:thumbs.shift()不是函数',而删除thumb [0]只返回整体拇指并且不受影响。
var thumbs = document.querySelectorAll('.thumbnail');
var mainThumbs = document.querySelectorAll('.main-thumbnail');
for(var i = 0; i < mainThumbs.length; i++){
delete thumbs[0];
console.log(thumbs);
}
这就是mainThumbs的样子:
(3) [div.thumbnail.main-thumbnail, div.thumbnail.main-thumbnail, div.thumbnail.main-thumbnail]
这是控制台输出的拇指:
(12) [div.thumbnail.main-thumbnail, div.thumbnail.main-thumbnail, div.thumbnail.main-thumbnail, div.thumbnail.modal-open, div.thumbnail, div.thumbnail, div.thumbnail, div.thumbnail, div.thumbnail, div.thumbnail, div.thumbnail, div.thumbnail]
并且typeOf thumbs和mainThumbs是对象
任何人都可以解释为什么我似乎无法从拇指对象中删除mainThumbs? 我还想要一个带拼接而不是删除或移位的解决方案,因为我发现它更准确。
答案 0 :(得分:3)
querySelectorAll('.thumbnail')
var thumbs = document.querySelectorAll('.thumbnail'); var mainThumbs = document.querySelectorAll('.main-thumbnail'); var thumbsArr = Array.prototype.slice.call(thumbs); var mainThumbsArr = Array.prototype.slice.call(mainThumbs); for(var i = 0; i < mainThumbsArr.length; i++){ delete thumbsArr[0]; console.log(thumbsArr); }
答案 1 :(得分:2)
document.querySelectorAll
不会返回数组。在某些方面,对象是类似数组的,但不是全部。
但是你解决这个问题的方法过于复杂了。不是获取.thumbnail
的所有元素,然后尝试删除.main-thumbnail
的元素,而只需使用the negation pseudo-class进行一次搜索:
var non_main_thumbs = document.querySelectorAll('.thumbnail:not(.main-thumbnail)');