如何使用 Javascript DOM 从具有多个表单的页面获取具有输入类型密码的表单?

Posted

技术标签:

【中文标题】如何使用 Javascript DOM 从具有多个表单的页面获取具有输入类型密码的表单?【英文标题】:How to get the form with input type password from a page with multiple forms using Javascript DOM? 【发布时间】:2021-02-26 18:25:02 【问题描述】:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Form.html</title>
    <style type="text/css">
      body 
        margin: 30px;
      
    </style>
  </head>
  <body>
    <form id="form1">
      <div id="fullnameIDdiv">
        Full Name: <input type="text" name="fullname" /><br />
      </div>
      <div id="usernameIDdiv">
        Username: <input type="text" name="username" /><br />
      </div>
      Password: <input type="password" name="password" /><br />
      <input type="submit" value="Submit" />
    </form>

    <form id="form2">
      <div id="firstName">
        Full Name: <input type="text" name="fname" /><br />
      </div>
      <div id="lastName">
        Username: <input type="text" name="lname" /><br />
      </div>
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>

例如, 在这个页面中有两种形式。我想获得具有inputtype = password 的表单。我不想使用它的 ID(getElementById) 来获取表单,因为我想获得一个更通用的解决方案来获取表单,input type = password 来自多个表单。

我已经研究了document.forms.elements,但我无法找到解决方案。请帮忙。

编辑: 在这里,我给出了一个示例 html 代码,但我的问题相当笼统。在此编辑之前给出的答案使用.parentNode() 来获取input 标记的父节点。但是如果input&lt;span&gt;&lt;section&gt; 等标签下,那么.parentNode() 不会给出&lt;form&gt; 标签。牢记这一点,如何使用 javascript DOM 从具有多个表单的页面中获取带有 input type = passwordform 标记?

【问题讨论】:

【参考方案1】:

就您现在的 HTML 而言,您可以尝试使用 querySelector()parentNode,如下所示:

var passForm = document.querySelector('input[type=password]').parentNode;
console.log(passForm);
<form id="form1">
  <div id="fullnameIDdiv">
    Full Name: <input type="text" name="fullname" /><br />
  </div>
  <div id="usernameIDdiv">
    Username: <input type="text" name="username" /><br />
  </div>
  Password: <input type="password" name="password" /><br />
  <input type="submit" value="Submit" />
</form>

<form id="form2">
  <div id="firstName">
    Full Name: <input type="text" name="fname" /><br />
  </div>
  <div id="lastName">
    Username: <input type="text" name="lname" /><br />
  </div>
  <input type="submit" value="Submit" />
</form>

【讨论】:

等中的输入是什么,然后以 google.com 登录页面的形式呈现整个内容。在那种情况下,表单将不是 parentNode 对吗?那我该怎么办。【参考方案2】:

最简单的方法是使用 jQuery。

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <form id="form1">
        <div id="fullnameIDdiv">
          Full Name: <input type="text" name="fullname" /><br />
        </div>
        <div id="usernameIDdiv">
          Username: <input type="text" name="username" /><br />
        </div>
        Password: <input type="password" name="password" /><br />
        <input type="submit" value="Submit" />
      </form>
      
      <form id="form2">
        <div id="firstName">
          Full Name: <input type="text" name="fname" /><br />
        </div>
        <div id="lastName">
          Username: <input type="text" name="lname" /><br />
        </div>
        <input type="submit" value="Submit" />
      </form>
      <script>
          $("form>input[type='password']").parent();
      </script>
</body>

【讨论】:

以上是关于如何使用 Javascript DOM 从具有多个表单的页面获取具有输入类型密码的表单?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript 从 iframe 内部获取 iframe 的高度?具有多个 iframe 的页面呢?

如何检查 DOM 中所有 div 的类名是不是具有带有 vanilla Javascript 的特定字符串?

如何提取XML文件中的数据?

从多个“输入:文件”中删除 FileList 项

Javascript DOM如何隐藏不合适的复选框

使用JavaScript从组件外部遍历本地DOM