JavaScript getElementsByName
最后修改于 2025 年 4 月 2 日
在本文中,我们将探讨 JavaScript 中的 document.getElementsByName
方法。此方法对于 DOM 操作至关重要,它允许开发人员通过 name 属性访问元素。
基本定义
document.getElementsByName
方法返回一个 NodeList 集合,其中包含具有指定 name 属性的元素。与 ID 不同,name 属性可以被多个元素共享。
此方法特别适用于处理表单元素,例如单选按钮和复选框,它们通常共享相同的名称。返回的 NodeList 是动态的,这意味着当文档发生更改时,它会自动更新。
基本 getElementsByName
此示例演示了如何通过 name 属性访问元素。
<!DOCTYPE html> <html> <head> <title>Basic getElementsByName</title> </head> <body> <input type="text" name="username" value="John"> <input type="text" name="username" value="Doe"> <script> const elements = document.getElementsByName('username'); for (let i = 0; i < elements.length; i++) { console.log(elements[i].value); } </script> </body> </html>
在此基本示例中,我们有两个具有相同名称“username”的输入元素。JavaScript 代码使用 getElementsByName
检索这些元素,并将它们的值记录到控制台中。
这展示了 getElementsByName
的基本用法,可以访问共享相同名称的多个元素。该方法返回一个我们可以迭代的 NodeList。
使用单选按钮
此示例展示了如何将 getElementsByName 用于单选按钮。
<!DOCTYPE html> <html> <head> <title>Radio Buttons</title> </head> <body> <input type="radio" name="gender" value="male" checked> Male <input type="radio" name="gender" value="female"> Female <button onclick="getSelectedGender()">Get Gender</button> <script> function getSelectedGender() { const genders = document.getElementsByName('gender'); let selectedValue; for (let i = 0; i < genders.length; i++) { if (genders[i].checked) { selectedValue = genders[i].value; break; } } alert('Selected gender: ' + selectedValue); } </script> </body> </html>
这里我们有用于性别选择的单选按钮。当点击按钮时,getSelectedGender
函数使用 getElementsByName
来查找所有单选按钮并确定哪个被选中。
这表明 getElementsByName
非常适合处理单选按钮组,因为它们必须共享相同的名称才能作为一个组运行。
修改多个元素
此示例演示了如何一次修改多个元素。
<!DOCTYPE html> <html> <head> <title>Modifying Elements</title> <style> .highlight { background-color: yellow; font-weight: bold; } </style> </head> <body> <p name="content">First paragraph</p> <p name="content">Second paragraph</p> <p name="content">Third paragraph</p> <button onclick="highlightContent()">Highlight Content</button> <script> function highlightContent() { const paragraphs = document.getElementsByName('content'); for (let i = 0; i < paragraphs.length; i++) { paragraphs[i].classList.add('highlight'); } } </script> </body> </html>
在此示例中,我们有多个具有相同名称的段落。当点击按钮时,highlightContent
函数会将 CSS 类添加到所有匹配的元素。
这表明 getElementsByName
可用于同时对多个元素应用更改。返回的 NodeList 类似于数组,但不是真正的数组。
表单验证
此示例演示了使用 getElementsByName 进行表单验证。
<!DOCTYPE html> <html> <head> <title>Form Validation</title> </head> <body> <input type="checkbox" name="terms"> I agree to terms <input type="checkbox" name="terms"> I agree to privacy policy <button onclick="validateForm()">Submit</button> <p id="message"></p> <script> function validateForm() { const terms = document.getElementsByName('terms'); const message = document.getElementById('message'); let allChecked = true; for (let i = 0; i < terms.length; i++) { if (!terms[i].checked) { allChecked = false; break; } } message.textContent = allChecked ? 'Form valid!' : 'Please check all boxes!'; } </script> </body> </html>
这里我们有所有需要被勾选才能进行表单验证的复选框。validateForm
函数使用 getElementsByName
检查所有复选框是否被勾选。
这演示了 getElementsByName
在表单验证场景中的实际用途,在这些场景中需要检查多个相关输入。
动态元素创建
此示例展示了如何处理动态创建的元素。
<!DOCTYPE html> <html> <head> <title>Dynamic Elements</title> </head> <body> <button onclick="addItem()">Add Item</button> <button onclick="countItems()">Count Items</button> <div id="container"></div> <script> let counter = 1; function addItem() { const container = document.getElementById('container'); const newItem = document.createElement('div'); newItem.name = 'dynamic-item'; newItem.textContent = 'Item ' + counter++; container.appendChild(newItem); } function countItems() { const items = document.getElementsByName('dynamic-item'); alert('Total items: ' + items.length); } </script> </body> </html>
在此示例中,我们动态添加了具有相同名称的元素,然后使用 getElementsByName
计数。这展示了动态 NodeList 的工作原理。
当添加新元素时,NodeList 会自动更新,这表明了 getElementsByName
返回的集合的动态特性。
来源
在本文中,我们展示了如何在 JavaScript 中使用 document.getElementsByName
。此方法对于在 Web 开发中处理相关元素组至关重要。
作者
列出 所有 JS DOM 教程。