我正在尝试在方括号用于宏替换的环境中编写一些javascript,因此它们不能在脚本中正常使用.
如果我创建一个数组作为对象,new Array()我可以使用push()和pop()来访问元素,但对于本机数组,我无法找到一种方法来获取元素而不使用括号.例如,从以下位置返回的数组:
var allElements = document.getElementsByTagName("*");
Run Code Online (Sandbox Code Playgroud)
有没有办法将一个本机数组分配给一个Array对象,所以我可以使用push()和pop(),还是有另一种方法可以进入?
是的,你可以使用prototype和slice方法(例如在IE中不起作用):
var index = 1;
Array.prototype.slice.call(allElements,index,index+1);
Run Code Online (Sandbox Code Playgroud)
对于IE,我能想到的唯一方法是将所有元素从集合复制到数组:
var newarr = new Array();
for(var i=0;i<allElements.length;i++){
newarr.push(allElements[i]);
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用此功能(在IE和Firefox中工作):
window.atIndex = function(array,index){
return eval("array" + String.fromCharCode(91) + String(index) + String.fromCharCode(93));
}
Run Code Online (Sandbox Code Playgroud)
通过使用获取任何项目 atIndex(allElements,0);