Автор оригинала: Jonathan Sexton.
Быстрое руководство по тому, как селекторы влияют на ваш код
Работая над проектом, я столкнулся с проблемой в моем коде. Я пытался определить несколько элементов HTML в коллекцию, а затем изменить эти элементы на основе некоторых предустановленных условий. Я боролся за примерно четыре часа времени кодирования (через два дня) отладка моего кода и пытаясь выяснить, почему я не получил желаемый результат.
Оказывается, я использовал Document.QuerySelectorallAll () Чтобы назначить мои элементы переменной, а затем я пытался изменить эти элементы. Единственная проблема заключается в том, что конкретный селектор JavaScript возвращает Статический Список узлов . Поскольку это не встроенное представление элементов, я не смог изменить их позже в моем коде.
Допущения
В этой статье я предполагаю, что несколько вещей, чтобы быть правдой:
- Вы работаете на «простой или ванильном» JavaScript (без структуры/библиотеки)
- У вас есть базовое понимание элементов/селекторов JavaScript
- У вас есть базовое понимание дома
Nitty-Gritty
В случае, если я слишком много предположил, я предоставил ссылки на соответствующие материалы в статье, которую я надеюсь, что будет полезна.
JavaScript – это такая обширная и богатая экосистема, которая не удивительно, что существует много способов выполнения той же задачи. В зависимости от вашей задачи, то, как оно выполнено, имеет значение в определенной степени.
Вы можете выкопать дыру руками, но это намного проще и эффективно сделать это с лопатой.
С этой целью я надеюсь «передать вам лопату» после того, как вы прочитали эту статью.
Выбор правильного инструмента для работы
У меня был вопрос: «Какой элемент селектор должен использовать?» несколько раз. До сих пор у меня не было много желаний или не нужно изучать разницу, пока мой код подготовил желаемый результат. В конце концов, что делает цвет такси, если он благополучно получает вашему назначению и своевременно … верно?
Давайте начнем с некоторых способов выбора Дом Элементы в JavaScript. Есть больше способов (я полагаю), чтобы выбрать элементы, но, перечисленные здесь, – это, безусловно, наиболее распространенным, которым я столкнулся.
Document.GetElementById ()
Они будут только когда-либо вернуть один (1) элемент, потому что по своей природе идентификаторы являются уникальными, и может быть только один (с тем же именем) на странице одновременно.
Он возвращает объект, который соответствует, передаваемую в него строку. Это возвращает нулевой Если в вашем HTML не обнаружено совпадение идентификатора.
В отличие от некоторых селекторов, которые мы получим позже в статье, нет необходимости для обозначения идентификатора элемента.
Document.GetelementsBytagname ()
Обратите внимание на элементы «S» в элементах – этот селектор возвращает Множественные в массивная структура известный как HTML Collection – все документ ищет, включая Корневой узел (объект документа) для соответствующего имени. Этот селектор элемента начинается в верхней части документа и продолжает вниз, в поисках тегов, которые соответствуют прошедшему строку.
Если вы хотите использовать родные Методы массива не повезло тебе. То есть, если вы не преобразуете возвращенные результаты в массив, чтобы повторить их, или использовать ES6 Распространение оператора – Оба из которых за пределами объема этой статьи. Но я хотел, чтобы вы знали, что можно использовать методы массива, если вы хотите.
Document.GetelementsByClassname ()
Селектор имени класса – снова заметите «S» в элементах – этот селектор возвращает Множественные в массивная структура известный как HTML Collection названий классов. Он соответствует прошедшему строке (может принять несколько классов, хотя они разделены пространством), ищет весь документ, можно вызывать на любом элементе, и возвращает только потомки прошедших в классе.
Также нет. (Период) необходим для обозначения имени класса
Document.Queryselector ()
Этот селектор будет только вернуть один (1) элемент.
Только первый элемент, соответствующий прошедшему строке, будет возвращен. Если не найдены совпадения для предоставленной строки, нулевой возвращается.
В отличие от всех наших предыдущих примеров, этот селектор требует. (период) для обозначения класса или # (OctoTORP) для обозначения идентификатора и работает со всеми селекторами CSS.
Document.QuerySelectorallall ()
Этот селектор возвращает Множественные которые соответствуют пропущенной строке и устраивают их в другую Массив, как структура известный как Список узлов Отказ
Как и в случае некоторых из предыдущих примеров, список узлов не может использовать нативный Методы массива как .для каждого ( ). Поэтому, если вы хотите использовать их, вы должны сначала преобразовать список узлов в массив. Если вы не хотите преобразовать, вы все равно можете повторять список узлов с F или … в заявлении Отказ
Пропущенные в строке должны соответствовать действительным селектором CSS – ID, имена классов, типов, атрибутов, значений атрибутов и т. Д.
Обертывание
Выбирая правый селектор для ваших потребностей кодирования, вы избежите многих подводных камней, в которые я упал. Это может быть невероятно расстраивает, когда ваш код не работает, но, гарантируя, что ваш селектор соответствует вашим ситуациям, у вас не будет проблем «копаться со своей лопатой»:)
Спасибо за чтение через этот пост. Если вам понравилось, пожалуйста, подумайте о том, чтобы пожертвовать некоторые хлопы, чтобы помочь другим находить это также. Я публикую (активно управляю моим графиком, чтобы написать больше), связанный с моим блог . Я также активен на Twitter И всегда рад связаться с другими разработчиками!
Оригинал: “https://www.freecodecamp.org/news/how-to-avoid-frustration-by-choosing-the-right-javascript-selector-73c64c3906b6/”