为什么我不能删除对象(JavaScript)?

为什么我不能删除对象(JavaScript)?,javascript,arrays,dom,javascript-objects,Javascript,Arrays,Dom,Javascript Objects,我有下面的代码,我似乎找不到从thumbs对象中删除mainThumbs的方法。我试过使用splice(0,(maintumbs.length-1))、shift、delete thumbs[0],但似乎没有任何效果。这些函数呈现以下错误“Uncaught TypeError:thumbs.shift()不是函数”,而delete thumbs[0]只返回完整的未触及的拇指 var thumbs = document.querySelectorAll('.thumbnail'); va

我有下面的代码,我似乎找不到从thumbs对象中删除mainThumbs的方法。我试过使用splice(0,(maintumbs.length-1))、shift、delete thumbs[0],但似乎没有任何效果。这些函数呈现以下错误“Uncaught TypeError:thumbs.shift()不是函数”,而delete thumbs[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);
}
这是控制台针对拇指的输出:

(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]
拇指和主拇指的类型是object

有人能解释为什么我不能从thumbs对象中删除mainThumbs吗?
我还希望使用splice解决方案,而不是delete或shift,因为我发现它更准确。

文档。querySelectorAll
不返回数组。在某些方面,对象类似于数组,但并非完全如此

不过你解决这个问题的方法太复杂了。不要获取所有
.thumbnail
元素,然后尝试删除
.main thumbnail
元素,只需使用以下命令进行一次搜索:


document.querySelectorAll
不返回数组。在某些方面,对象类似于数组,但并非完全如此

不过你解决这个问题的方法太复杂了。不要获取所有
.thumbnail
元素,然后尝试删除
.main thumbnail
元素,只需使用以下命令进行一次搜索:

querySelectorAll('.thumbnail')

  • 返回集合而不是数组
  • 但您可以从Array对象借用slice方法并创建自己的真实数组:
  • var thumbs=document.querySelectorAll('.thumbnail');
    var maintumbs=document.querySelectorAll('.main-thumb');
    var thumbsArr=Array.prototype.slice.call(thumbs);
    var maintumbsarr=Array.prototype.slice.call(maintumbs);
    对于(变量i=0;i
    querySelectorAll('.thumbnail')

  • 返回集合而不是数组
  • 但您可以从Array对象借用slice方法并创建自己的真实数组:
  • var thumbs=document.querySelectorAll('.thumbnail');
    var maintumbs=document.querySelectorAll('.main-thumb');
    var thumbsArr=Array.prototype.slice.call(thumbs);
    var maintumbsarr=Array.prototype.slice.call(maintumbs);
    对于(变量i=0;i

    你想从数组或dom中删除它们吗?@JohnRodney-什么数组?没有数组。那么上面的控制台输出都是数组表示法。
    querySelectorAll
    函数返回的类似数组的对象。可以使用
    [].slice.apply(res)
    将它们转换为一个数组。然后使用
    element.parentNode.removeChild(元素)querySelectorAll
    函数返回的类似数组的对象。可以使用
    [].slice.apply(res)
    将它们转换为一个数组。然后使用
    element.parentNode.removeChild(元素)我没有意识到在搜索中否定的可能性。谢谢你,伙计!我没有意识到在搜索中否定的可能性。谢谢你,伙计!
    
    (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]
    
    var non_main_thumbs = document.querySelectorAll('.thumbnail:not(.main-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);
    }