【问题标题】:Javascript elements.length returning wrong count?Javascript elements.length 返回错误的计数?
【发布时间】:2009-11-03 18:53:59
【问题描述】:

好吧,我已经在这个问题上摸不着头脑了......似乎related to this ol' chestnut

这是我的问题:

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

testlength 返回 60
但是!
testlastelement 返回为“未定义”(null 或不是对象)

什么给了?

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

【问题讨论】:

  • 60 将在大小为 60 的数组之外。最后一个元素以长度 [59] 结束

标签: javascript arrays indexing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    像 JavaScript 中的 form.elements 这样的数组和 HTMLCollections 具有从 0 开始的索引,这意味着您有 60 个元素,它们的索引从 0 到 59,或从 0 到 length-1

    【讨论】:

    • 知道了!长度为 60,但范围为 0 - 59。谢谢!
    【解决方案3】:

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

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

    【讨论】:

    • 好的,很酷。我明白了...但是...混乱仍然存在... theForm.elements[0] 返回一个有效元素。那么什么是长度属性计数?长度 = 60,0 = 我的第一个元素,60 = ???。我的循环不再使用 -1 方法出错......但那是因为它跳过了第一个元素。提前致谢!
    【解决方案4】:

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

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

    此外,camelcase 是 javascript 标准。可能最好把它写成:

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

    至少要保持一致。你的变量 theForm 是驼峰式的。

    【讨论】:

    • 谢谢!是的,我是新手……但我正在学习!尽管如此,我仍然对长度计数的事情摸不着头脑......见上文。
    猜你喜欢
    • 2021-10-12
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 2017-03-19
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多