Мне нужно выбрать элемент внутри другого элемента (кнопка в форме). Обычно я использую jQuery; который будет выглядеть примерно так:
element = $('#webform-client-form-1812 input[name="op"]');
Но я не могу использовать jQuery в этом проекте, поэтому я попробовал:
element = document.getElementById("webform-client-form-1812").getElementsByName("op")[0];
Но я получаю сообщение об ошибке:
Uncaught TypeError: document.getElementById(...). GetElementsByName не является функцией.
Это похоже на один из тех вопросов, когда решение будет смущающим очевидным для других. Но я тщательно изучил это, и я не вижу своей ошибки. Кто-нибудь может мне помочь?
getElementsByName
- это только метод document
- в отличие от getElementsByClassName
, он не может быть использован для отдельных элементов.
Вместо этого используйте querySelector
, и вы можете использовать тот же селектор CSS, который вы использовали в jQuery:
const element = document.querySelector('#webform-client-form-1812 input[name="op"]');
Вероятно, полезно использовать querySelector
или querySelectorAll
вместо вложенных getElement... getElement
вызовов, когда это возможно - это менее излишне подробный и делает код более понятным. Вы можете легко выразить множество сложных правил с помощью строки селектора CSS, которая была бы довольно громоздкой для кода в противном случае.
Поскольку "getElementsByName" и "getElementById" могут поддерживаться только объектным "документом" и "XMLDocument", вы можете сравнить с getElementByTagName. http://help.dottoro.com/ljlfpmux.php