Javascript elements.length返回错误计数?

时间:2009-11-03 18:54:00

标签: javascript arrays indexing

好的,现在我已经抓住了这个......似乎related to this ol' chestnut

这是我的问题:

var testlength = theForm.elements.length;
var testlastelement = theForm.elements[testlength].type;

testlength返回60
BUT!
testlastelement返回为“undefined”(null或不是对象)

是什么给出的?

FWIW,我的页面有一堆输入(我试图遍历表单并获取名称,值等)...表单输入包含在表中但最后的元素(也是类型) = image)在那张桌子之外。

4 个答案:

答案 0 :(得分:10)

使用testlength - 1。数组是从零开始的。

答案 1 :(得分:4)

JavaScript中的form.elements等数组和HTMLCollections具有从0开始的索引,这意味着您有60个元素,它们的索引从0到59,或者从0到长度为1

答案 2 :(得分:3)

好吧,数组的第一个元素的索引为0,因此你应该尝试这个:

var testlastelement = theForm.elements[testlength-1].type;

答案 3 :(得分:1)

您需要testlength-1,因为数组是zeo索引的。那就是:

var testlastelement = theForm.elements[testlength-1].type;

此外,camelcase是javascript标准。写这个可能更好:

var testLastElement = theForm.elements[testLength-1].type;

至少要保持一致。你的变量theForm是camelcased。