javascript - 使用 `.childNodes` 从 javascript 访问 HTML DOM 元素

标签 javascript dom

我想知道 .childNodes 属性,我有下面的代码,出于某种原因我有 18 个 child ,而 6 个是预期的 HTMLInputElement,其余的是 undefined。这是关于什么的?是否有一种有效的方法来迭代 input 元素?

<html>
  <head>
    <script>
    window.onload = function(e){
        form = document.getElementById('myForm');
        alert(form.childNodes.length);
        for(i=0; i<form.childNodes.length; i++){
            alert(form[i]);
        }
    }
    </script>
  </head>
  <body>
<form id='myForm' action="haha" method="post">
Name: <input type="text" id="fnameAdd" name="name" /><br />
Phone1: <input type="text" id="phone1Add" name="phone1" /><br />
Phone2: <input type="text" id="phone2Add" name="phone2" /><br />
E-Mail: <input type="text" id="emailAdd" name="email" /><br />
Address: <input type="text" id="addressAdd" name="address" /><br />
<input type="submit" value="Save" />
</body>
</html>

最佳答案

文本节点,即使它们只包含空格,也将包含在输出中,br 元素也是如此。

如果您想要所有元素,包括 br,请改用 .children。这只会给你元素节点。我认为较旧的 IE 不正确地包含注释节点,但您的代码中没有注释节点,所以没问题。

或者你可以做...

form.getElementsByTagName('input')

...假设您只需要 input 元素。

除此之外:您忘记关闭您的 form 元素。

关于javascript - 使用 `.childNodes` 从 javascript 访问 HTML DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097797/

相关文章:

javascript - 图表交互指南默认为光标另一侧的最远值

javascript - js 新手试图通过 ajax 混淆来理解 dom(概念)

javascript - 如何使用 jQuery 检索多个 anchor URL?

javascript - classList.add 已停止运行我的代码。我不知道为什么。你可以吗?

javascript - 在 Angular 2 中使用 jQuery

javascript - 为什么运行index.html文件时我的代码不起作用?

javascript - 如何将 javascript 字典转换为编码的 url 字符串?

javascript - 在fabric.js中添加颜色减淡/分割混合模式

javascript - 仅选择第一个按钮

javascript - 避免 event.target 引用子级而不是父级