Array.prototype.splice.call - 不使用querySelectorAll('。className')

时间:2015-03-03 12:41:27

标签: javascript html css arrays selectors-api

我有三个div,类名为.column,位于底部,在我的body标签之前我有一个小脚本应该得到这些div并将它们放入一个数组中以便我可以继续工作他们。我以前做过这个,所以我不知道这次可能导致这个问题

var columns = Array.prototype.splice.call(document.querySelectorAll('.column'));
document.write("Size: " + columns.length);

以上代码特别是Array.prototype.splice.call(document.querySelectorAll('.column'));应该将querySelectorAll返回的节点列表转换为可行的数组。但是,每当我写var columns的长度时,它总是返回 0 ,这是不可能的,因为我有三个div与该类。 现在,当我这样做时:

var columnsNodes = document.querySelectorAll('.column'); document.write(columnsNodes.length);

我将其写入返回 3 的文档,这是正确的。这让我相信有关将节点列表转换为数组的问题是行不通的,这很奇怪,因为我以前曾多次这样做过。有谁知道造成这种情况的原因是什么?

我做的东西:

  • 多次检查拼写
  • 在调用之前插入父div,例如:('.parentDiv .column');
  • 删除了与.column
  • 相关联的ID

没有任何效果,请给我你的意见。

1 个答案:

答案 0 :(得分:0)

  

splice()方法在数组中添加/删除项目,然后返回   删除的项目。

     

注意:此方法更改原始数组。

http://www.w3schools.com/jsref/jsref_splice.asp

你应该使用slice(),这样就不会尝试编写NodeList(这是不可能的)。