В этом руководстве вы узнаете, как использовать метод JavaScript getElementsByName()
для получения элементов с заданным именем в документе.
Каждый элемент HTML-документа может иметь name
:
<input type="radio" name="language" value="JavaScript">
В отличие от id
, несколько элементов HTML могут использовать один и тот же value
атрибута name
следующим образом:
<input type="radio" name="language" value="JavaScript"> <input type="radio" name="language" value="TypeScript">
Чтобы получить все элементы с указанным именем, используйте метод getElementsByName()
объекта document
:
let elements = document.getElementsByName(name);
getElementsByName()
принимает name
, который является значением атрибута name
элементов, и возвращает NodeList
элементов.
Возвращаемая коллекция элементов активна. Это означает, что возвращаемые элементы автоматически обновляются, когда элементы с одинаковыми именами вставляются и/или удаляются из документа.
Пример
В следующем примере показана группа переключателей, состоящая из переключателей с одинаковыми именами( rate
).
Когда вы выбираете переключатель и нажимаете кнопку отправки, на странице отображается выбранное значение, такое как Very Poor
, Poor
, OK
, Good
или Very Good
:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JavaScript getElementsByName Demo</title> </head> <body> <p>Please rate the service:</p> <p> <label for="very-poor"> <input type="radio" name="rate" value="Very poor" id="very-poor"> Very poor </label> <label for="poor"> <input type="radio" name="rate" value="Poor" id="poor"> Poor </label> <label for="ok"> <input type="radio" name="rate" value="OK" id="ok"> OK </label> <label for="good"> <input type="radio" name="rate" value="Good"> Good </label> <label for="very-good"> <input type="radio" name="rate" value="Very Good" id="very-good"> Very Good </label> </p> <p> <button id="btnRate">Submit</button> </p> <p id="output"></p> <script> let btn = document.getElementById('btnRate'); let output = document.getElementById('output'); btn.addEventListener('click',() => { let rates = document.getElementsByName('rate'); rates.forEach((rate) => { if(rate.checked) { output.innerText = `You selected: ${rate.value}`; } }); }); </script> </body> </html>
Как это работает:
- Сначала выберите кнопку отправки по ее идентификатору btnRate, используя метод getElementById().
- Во-вторых, прослушайте событие нажатия кнопки отправки.
- В-третьих, получите все переключатели с помощью
getElementsByName()
и покажите выбранное значение в выходном элементе.
Обратите внимание, что о таких событиях, как click
, вы узнаете позже. А пока вам просто нужно сосредоточиться на getElementsByName()
.
Заключение
getElementsByName()
возвращаетNodeList
элементов с указанным именем.NodeList
— это объект, подобный массиву, но не объект массива.