Они делают совершенно разные вещи. Если вы хотите получить определенный элемент и вам всегда нужно получать один и тот же элемент, используйте идентификатор. Если вы хотите получить конкретный элемент в зависимости от того, какое место он занимает в DOM, то используйте его позицию в getElementsByTagName NodeList.
Если вы хотите получить определенный элемент и получить его по индексу, тогда ваш скрипт будет хрупким - если вы позже измените свою структуру DOM, вам придется изменить свой код. Если вы хотите получить элемент по его позиции, то при использовании идентификатора вам потребуется добавить избыточные атрибуты в вашу разметку.
Также важно отметить, что getElementById
возвращает узел DOM, а getElementsByTagName
возвращает NodeList . Чтобы процитировать MDC в свойствах NodeList:
NodeList является активным, что означает, что он автоматически обновляется, чтобы синхронизироваться с деревом DOM без повторного вызова document.getElementsByTagName.
Так что, если вам нужен конкретный элемент, getElementById
будет значительно быстрее.