2015-03-03 63 views
0

我有三个div,类名为.column,在底部,在我的身体标记之前我有一个小脚本,应该是得到这些div并将它们放入一个数组中,以便我可以对它们进行处理。我之前做过这个,所以我不知道可能是什么原因导致Array.prototype.splice.call - 不使用querySelectorAll('。className')

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

上述代码特别Array.prototype.splice.call(document.querySelectorAll('.column'));应该把由querySelectorAll返回到一个可行的阵列的节点列表。但是,每当我写入var columns的长度时,它总是返回,这是不可能的,因为我有三个div。 现在,当我这样做:

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

我把它写入它返回的文件,这是正确的。这导致我相信有关将节点列表转换为数组的操作不起作用,这很奇怪,因为我之前曾多次完成该操作。有没有人有任何想法可能造成这种情况?

的东西,我已经做了:

  • 检查拼写多次调用如之前
  • 插入父DIV:('.parentDiv .column');
  • 删除与.column

没有奏效相关的标识的,请给我你的意见。

+0

请包括您的HTML以及此问题的[编辑]。 – Scimonster 2015-03-03 12:43:42

+0

我通过添加第二个参数来得到它的效果:'Array.prototype.splice.call(document.querySelectorAll('。column'),null);' – zvona 2015-03-03 12:43:47

+2

*上面的代码应该是将节点list'由'querySelectorAll'返回到一个可工作的数组*。嗯,那将是'slice()',然后,而不是'splice()'。 – 2015-03-03 12:44:56

回答

0

splice()方法向/从数组中添加/删除项目,并返回 删除的项目。

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

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

您应该使用切片()代替它不会尝试写一个节点列表(这是OFC,是不可能的)。

相关问题