最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - array.splice() gives error TypeError: arr.splice is not a function(…) - Stack Overflow

programmeradmin7浏览0评论
var arr = document.querySelectorAll("a[href*='somestring']")

Returns what looks like an array in the console. Square braces [] and arr.length = 7.

Screen below. Why won't splice() work on my array?

var arr = document.querySelectorAll("a[href*='somestring']")

Returns what looks like an array in the console. Square braces [] and arr.length = 7.

Screen below. Why won't splice() work on my array?

Share Improve this question edited Nov 12, 2015 at 15:50 Doug Fir asked Nov 12, 2015 at 15:48 Doug FirDoug Fir 21.4k54 gold badges191 silver badges340 bronze badges 1
  • 6 .querySelectorAll() returns a NodeList which has no .splice() method – Andreas Commented Nov 12, 2015 at 15:50
Add a ment  | 

3 Answers 3

Reset to default 7

The object returned from querySelectorAll is a NodeList, which is Array-like, yet not an actual array.

Try this to convert to an array:

[].slice.call(document.querySelectorAll("a[href*='somestring']"));

https://developer.mozilla/en-US/docs/Web/API/NodeList

HTMLCollection and NodeList objects do not have a splice method and do not inherit from Array.prototype.

Furthermore, you can't simply invoke a splice on them as they're not designed to be modified even though they are Array-like.

First, convert them to a true Array.

var arr = document.querySelectorAll("a[href*='somestring']"); // NodeList
arr = Array.prototype.slice.call(arr); // Array
arr.splice(2, 2); // splicing an Array

document.querySelectorAll("a[href*='somestring']") return an object not array.

try to convert it to an array:

var arr = document.querySelectorAll("a[href*='somestring']");

var a = [];
for(var i =0;i<arr.length ; i++){
a[i] = arr[i];
} 

a.splice()//now you can use a as an array
发布评论

评论列表(0)

  1. 暂无评论