Рассмотрим следующий элемент:
<div id="Example"></div>
В современных браузерах большинство методов JavaScript, используемых для получения объекта Element
с помощью id
, чувствительны к регистру:
document.getElementById('Example') // <div id="Example">
document.getElementById('example') // null
document.querySelector('#Example') // <div id="Example">
document.querySelector('#example') // null
document.querySelector('[id="Example"]') // <div id="Example">
document.querySelector('[id="example"]') // null
С другой стороны, вы можете использовать нечувствительный к регистру селектор атрибута , чтобы выбрать элемент с помощью id
независимо от заглавных букв:
document.querySelector('[id="Example" i]') // <div id="Example">
document.querySelector('[id="example" i]') // <div id="Example">
Приведенный выше метод будет работать для всех значений атрибутов HTML в диапазоне ASCII.
Хотя это и не рекомендуется, вы также можете использовать регистрозависимый поиск флаг регулярного выражения, чтобы получить элемент на id
независимо от регистра. Этот метод может использоваться не только для сопоставления с регистром без учета регистра:
[...document.querySelectorAll('[id]')].find(e => /^Example$/i.test(e.id)) // <div id="Example">
[...document.querySelectorAll('[id]')].find(e => /^example$/i.test(e.id)) // <div id="Example">
Что касается CSS, селектор идентификатора (#example
) нечувствителен к регистру, тогда как селектор атрибута ID ([id="example"]
) чувствителен к регистру, если только вы используйте селектор атрибутов без учета регистра ([id="example" i]
):
#Example { /* ... */ } /* Match */
#example { /* ... */ } /* Match */
[id="Example"] { /* ... */ } /* Match */
[id="example"] { /* ... */ } /* No Match */
[id="Example" i] { /* ... */ } /* Match */
[id="example" i] { /* ... */ } /* Match */