-- а что это за эта jQuery
Да эта такая штука которая практически зависает теперь во всех сайтах Рунета. Вот на Ярушке ее зачем то поставили.
-- а может она нужна?
Хорошая вещь я сам от нее балдел - было время, но меня подвело любопытство. Я полез в потроха как самый обычный любопытный мальчишка, чтобы посмотреть как это чудище устроено, и такое увидел, что после - начал искать альтернативу
--- ой как интересно, а ну расскажи я тоже хочу -
Потом , потом как нибудь. Лучше давай все же уделим время ее убийце. Это намного интереснее., чем монстр маниакального вида, но как всегда на глиняных ногах.
Итак ты знаешь чтобы в в документе найти ссылку на любой объект используется набор специальных функций, которые все просматривают документ, с точки зрения его структуры. Смотри вот пример
<table id="score">- на странице он выглядит так
<thead>
<tr>
<th>Тесты
<th>Результат
<tbody>
<tr>
<td>A
<td>87%
<tr>
<td>B
<td>78%
<tr>
<td>C
<td>81%
<tfoot>
<tr>
<th>ИТОГО
<td>82%
</table>
Тесты | Результатt |
---|---|
A | 87% |
B | 78% |
C | 81% |
ИТОГО | 82% |
-- ты меня совсем запутал)) -
Так вот раньше к примеру чтобы выполнить такое логическое заключение и найти
-- все вторые столбцы этой таблицы, которые несут результат измерения, и их по порядку скомпоновать в массив., то для этого сначала нужно было просканить весь документ и собрать всю информацию о таблице, а потом уже в полученном массиве выбрать нам нужную. Я не буду приводить здесь весь скрипт, а коснусь только констатацией того что он достаточно большой, и то что появления пакетов обрабатывающих сложные запросы, такие как jQuery - были в свое время необходимы, пока сами браузеры не стали реализовывать эти функции впрямую с помощью откомпилированных и вложенных в браузер.
Да эти функции используют более сложные правила формирования запросов, которые так же использует и jQuery и другие, но скрипт-пакеты это не одна сотня не скомпилированного текста , каждый раз когда ты открываешь страницу в инете , перекачивается с сервера в твой браузер, синтаксически распознается на правильность, компилируется и исполняется, И все это требует затрат , а то : сервера, канала связи, браузера, и твоего компа - а ресурсы эти вовсе не маленькие и они жрут, как и память, так и время. И есть еще одно - это твоя безопасность, которую могут в громадных потоках нарушить злоумышленники, подсунув вместо того что тебе передает сервер , что то свое опасное.
-- а согласна, полностью согласна --
Вот мы браузерники и решили сделать за скрипт пакеты работу и во-первых сократить поток ненужного скрипта, переместив его внутрь браузера изначально. Теперь тебе не надо при вычислении сложной функции загружать еще и несколько сотен килобайт поддержки , а просто воспользоваться тем что у тебя есть на браузере смотри вот как это выглядит
var cells = document.querySelectorAll("#score>tbody>tr>td:nth-of-type(2)");Это всего строчка которая по синтаксису состоит из запроса функций, а их две - я потом объясню почему их две с аргументами в виде селектора CSS.
Синтаксис
element = document.querySelector(selectors);где
- element - совокупность объектов для результата
- document - обрабатываемый документ, и необязательно чтобы он бы корневой
- selectors - селекторная формула, по которой производится сканирование документа, с поиском необходимого результата. Представляет собой строку
Функции и их результат
Теперь пришло время остановиться на том , что есть две функции. Это querySelector и querySelectorAll
и они обе имеют одинаковый синтаксис и применение, ено выдаваемый результат у них разный. Более общей функцией - служит querySelectorAll . Именно она и выполняет поиск объектов по формуле селекции, выдавая результат в виде объекта или списка всех Node. Если элемент один, то результат все равно тот же, но размерностью в один элемент. Чтобы получить массив - нужно произвести преобразование результата так
Array.prototype.slice.call(результат)
Для того чтобы отбросить массив или взять первый элемент множества, то лучше использовать функцию querySelector
Ну вот вроде и все об этих функциях. А об их применении мы поговорим на следующем занятии.