- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
注意: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/
注意:IE8和IE9有所不同。 var foo = documentGetElementById( form_name ).elements; 在 IE 9 中,foo 获取一个元素数组,其中包
我是一名优秀的程序员,十分优秀!