当前位置: 首页 > 面试题库 >

如何遍历从getElementsByTagName返回的所有元素

卫宏硕
2023-03-14
问题内容

我正在尝试遍历所有getElementsByTagName("input")使用forEach
重构的元素。有什么想法为什么在FF,Chrome或IE中不起作用?

<html>
    <head>
    </head>
    <body>
        <input type="text" value="" />
        <input type="text" value="" />
        <script>
            function ShowResults(value, index, ar) {
                alert(index);
            }
            var input = document.getElementsByTagName("input");
            alert(input.length);
            input.forEach(ShowResults);
    </script>
    </body>
</html>

问题答案:

您需要使用以下命令将节点列表转换为数组:

<html>
    <head>
    </head>
    <body>
        <input type="text" value="" />
        <input type="text" value="" />
        <script>
            function ShowResults(value, index, ar) {
                alert(index);
            }
            var input = document.getElementsByTagName("input");
            var inputList = Array.prototype.slice.call(input);
            alert(inputList.length);
            inputList.forEach(ShowResults);
    </script>
    </body>
</html>

或用于循环。

for(i = 0;i < input.length; i++)
{
    ShowResults(input[i].value);
}

并将ShowResults函数更改为:

function ShowResults(value) {
   alert(value);
}

为什么我们需要这样做?
JavaScript中的某些对象看起来像一个数组,但不是一个。这通常意味着它们具有索引访问和length属性,但是没有任何数组方法。示例包括特殊的变量参数,DOM节点列表和字符串。类似于数组的对象和通用方法提供了使用类似数组的对象的技巧。

更新2019年7月10日
如今,您可以使用ES6 [...inputList].forEachArray.from(inputList)



 类似资料:
  • 问题内容: 我需要JavaScript代码来遍历HTML元素中的填充属性。 这个ref表示我可以通过索引访问它,但是没有指定它是否受良好支持并且可以使用(跨浏览器)。 还是其他方式?(不使用任何框架,例如jQuery / Prototype) 问题答案: 这将在IE,Firefox和Chrome中运行(有人可以测试其他人吗?—谢谢@Bryan): 编辑:IE迭代有问题的DOM对象支持的 所有 属性

  • 问题内容: 我试图遍历页面上的所有元素,所以我想检查此页面上存在的每个元素是否有特殊类。 那么,我怎么说我要检查每个元素? 问题答案: 您可以将传递给,以便它将返回页面中的所有元素: 请注意,如果可用(可以使用IE9+,IE8中的CSS),可以使用来查找具有特定类的元素。 对于现代浏览器来说,这无疑会加速事情的发展。 浏览器现在在NodeList上支持foreach。这意味着您可以直接循环元素,而

  • 问题内容: 我们有一个软件不会删除不再需要的条目。为了了解服务器中有多少数据正在浪费,并准备进行大型清理操作,我试图遍历所有表并拉出标记为删除的记录。这就是我正在使用的: 这是我的错误: 消息116,级别16,状态1,行19当未将EXISTS引入子查询时,只能在选择列表中指定一个表达式。 我意识到我的错误可能与选择该行中的两列有关 但是,我不确定如何才能确保选择下一行。 PS仅用于脚本测试。 如何

  • 问题内容: 我正在尝试对通过document.querySelectorAll查询的选定元素进行循环,但是如何? 例如,我使用: 输出: 我的问题是,最后此方法返回了3个额外的项目。我该怎么做呢? 问题答案: 不建议对数组和类似数组的对象使用循环-您会明白为什么。不仅可以有数字索引项,例如属性或某些方法,还可以遍历所有这些项。使用任一 要么 如果数组中的某些元素可能是虚假的(不是您的情况),则无法

  • 问题内容: 我有一个表A,并且有一个主键ID。 现在我要遍历A中的所有行。 我发现类似“针对A中的每个记录”的内容,但这似乎并不是您在MySQL中的处理方式。 我想为每一行获取一个字段并对其进行转换,将其插入到另一个表中,然后更新该行的某些字段。我可以将select部分和insert放入一个语句中,但是我也不知道如何在其中进行更新。所以我想循环。实际上,我不想使用MySQL以外的任何东西。 编辑

  • 问题内容: 我想遍历XML打印中的所有元素。我的问题是,在标记之后,我一直收到空指针异常,即 这是我的Java代码,用于打印xml文件中的所有元素: XML档案: 预期产量: 问题答案: 遍历所有子项,并用于过滤出文本节点。如果XML中没有其他内容,则剩下的是人员节点。 对于资料下的每个节点(名称,电话,电子邮件,区域,城市) 会在“东西”下提取“名称”节点,为 您提供第一个节点,并在其中获取文本