gpt4 book ai didi

javascript - 这行代码的作用是什么? var foo = documentGetElementById( form_name ).elements;

转载 作者:行者123 更新时间:2023-12-02 19:51:15 26 4
gpt4 key购买 nike

注意:IE8和IE9有所不同。

   var foo = documentGetElementById( form_name ).elements;

在 IE 9 中,foo 获取一个元素数组,其中包含用户提交的值,以便可以像这样迭代它们。

for ( index in foo )
{
if( foo[index].value === 'element_value' )
{
return 1;
}
}

在 IE 8 中我不知道 foo 里面有什么。但我无法再循环遍历元素以从表单中提取用户输入。 IE 8 调试器报告 foo[element] 为 NULL 或不是对象。

在这两种情况下,我都不知道它应该做什么(而不是它实际做什么)。

最佳答案

不要使用这样的for ... in for 循环。相反:

    for (var index = 0; index < foo.length; ++index) {
if (foo[index].value === 'whatever') { return 1; }
}

循环的for ... in形式用于遍历对象的属性。实际上,您在这里得到的是一个对象,但更重要的是它的行为更像是一个数组。 (实际上,它是一个 NodeList HTMLCollection,但对于内容遍历,它可以被视为数组。)按数字索引迭代的优点是,您可以避免绊倒真正不存在的对象的属性。其概念内容的一部分。

您的另一个问题是在索引表达式中使用“element”;我不知道“元素”是什么/是什么,但您想使用迭代器变量。

编辑 — 我所认为的“元素”(NodeList)和它实际的(HTMLCollection)之间的区别在于,集合 API 既有数字索引的外观,也有名称索引的外观。问题是,如果您以某种方式知道表单外部的名称,那么按名称访问方法就有意义了。然而,对于你正在做的事情,我仍然会使用数字迭代器,因为否则事情会变得有点困惑(对我来说)。可能是我太偏执了,所以也许有更有见识的人会发表评论或回答。在我看来,浏览器使来自 DOM 规范的 IDL 定义在 JavaScript 中工作的方式是一个有些不稳定的领域。

关于javascript - 这行代码的作用是什么? var foo = documentGetElementById( form_name ).elements;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9284322/

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