Nano Hash - криптовалюты, майнинг, программирование

* селектор работает в getElementsByTagName(), но не для getElementsByClassName() в javascript?

Я могу использовать селектор '*' в getElementsByTags(), но не в getElementsByClassName() или getElementByID().

Может ли кто-нибудь объяснить, почему? И есть ли способ использовать селектор подстроки в методах javascript, т.е. (getElementsByClassName("*profile") для выбора элементов, имя класса которых включает "профиль"?

Ниже приведен мой код:

<body>
<div class="yahoo">
</div>
<p class="yahoo">
</p>
<ul class="yahoo">
</ul>

<div class="yahoo">
</div>


<input type='text'>
    <script type="text/javascript">
    function select(){
    var elements = document.getElementsByTagName("*")
    var elements2 = document.getElementsByClassName("*")
    console.log(elements)
}

select()
</script>

  • "Может кто-нибудь объяснить, почему?" — потому что * по определению означает "любое возможное имя элемента", а не "любое возможное имя класса". 09.11.2014

Ответы:


1

Это поведение соответствует DOM-Level-2-Core спецификация, в которой говорится, что:

getElementsByTagName
Возвращает NodeList всех дочерних элементов с заданным именем тега в том порядке, в котором они встречаются при предварительном обходе этого дерева элементов.
Параметры
имя типа DOMString
Имя тега для сопоставления. Специальное значение "*" соответствует всем тегам.

Для символа * для метода getElementsByClassName нет специального понятия, которое трактуется буквально как имя класса.

UPD. Отвечая на ваш второй вопрос:

можно ли в любом случае использовать селектор подстроки в методах javascript, т.е. (getElementsByClassName("*profile") для выбора элементов, имя класса которых включает "профиль"?

Вы не можете использовать getElementsByClassName, однако для этого можно использовать другой очень полезный метод querySelectorAll:

document.querySelectorAll('[class*="profile"]');
09.11.2014
  • Мы с вами обратились к разным частям одного и того же вопроса (я полагаю, мы оба стремились ответить на другую часть в правках); если вы хотите включить мой ответ в свой (для одного чистого решения), я был бы признателен; тогда я могу удалить свой ответ и оставить одно полное решение. 09.11.2014
  • @DavidThomas Спасибо, что указали на это, я действительно пропустил вторую часть! Но вам не нужно удалять свой ответ, в нем есть полезные ссылки и пояснения. 09.11.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование