gpt4 book ai didi

javascript数组推送问题

转载 作者:行者123 更新时间:2023-11-30 07:03:10 24 4
gpt4 key购买 nike

我有以下 javascript 代码:

var objectArray = [];
var allInputObjects = [];
var allSelectObjects = [];
var allTextAreaObjects = [];

//following returns 3 objects
allInputObjects = document.getElementById("divPage0").getElementsByTagName("INPUT");

//following returns 1 object
allSelectObjects = document.getElementById("divPage1").getElementsByTagName("SELECT");

//following returns 0 objects
allTextAreaObjects = document.getElementById("divPage2").getElementsByTagName("TEXTAREA");

//and following statement does not work
objectArray = allInputObjects.concat(allSelectObjects);

我的问题是最后一行抛出错误。

我在 Firefox 中试过上面的代码,它说 allInputObjects.concat 不是一个函数。

任何线索,我相信脚本没有将 allInputObjects 视为数组!

我们将不胜感激。

最佳答案

getElementsByTagName 返回一个 NodeList,它类似于 Array,只是它不支持所有这些原型(prototype)函数。

要将此类类似数组的对象无缝转换为数组,请使用:

var arr = Array.prototype.slice.call(somenodelist, 0);

arr 几乎完全相同,只是它现在支持 Array 原型(prototype)函数,例如 concat

该函数实际做的是返回一个部分Array,其中包含somenodelist 的元素,准确地说是从索引0 开始的所有内容。显然,这只是所有元素,因此这是将类似数组的对象转换为真正的 Array 的技巧。

关于javascript数组推送问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6731016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com