Page 296 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 296

Обратите внимание, что вы можете объединить предков с прямыми потомками. На­
       пример, body  . content  >  р выберет дескрипторы <р>, которые являются прямыми по­
       томками элементов класса content, которые являются потомками дескриптора <body>.
          Существуют куда более сложные селекторы, но здесь рассматриваются лишь наи­
       более распространенные.  Более  подробная  информация  по этой  теме  приведена
       в части по селекторам в документации MDN  ( h t t ps :  / d eveloper  m ozilla . org/ru/
                                                       /
                                                                   .
       do s / Learn/CSS/Introduction _ to _ CSS/Selectors).
         c
       Ма н и п  улирова   н и е    элемент а м и   DOM

          Т е перь, когда известно, как обходить, находить и выбирать элементы, возникает
       вопрос "Что с  ними делать?" Начнем с модификации содержимого. У каждого эле­
       мента есть два свойства, textContent и innerHTML, которые позволяют получить до­
       ступ к содержимому элемента и изменить его. Свойство textContent содержит только
       "голые" текстовые данные НТМL-дескриптора, а innerHTML позволяет использовать
       НТМL-код (что приводит к образованию новых узлов DOM). Давайте рассмотрим, как
       можно обратиться к первому абзацу в нашем примере и изменить его.
       const  paral   =  document . g etElementsByTagName ( ' p  ' )  [ О ] ;
       paral . textContent ;  / /  "Это  простой  НТМL-файл . "
       paral . innerHTML;   / /  "Это  <i>простой</i>  НТМL-файл . "
          a
                                              л
       par l . textContent  =  "Измененный  НТМL-фай " ;   / /   Посмотрите  в  браузере,
          a
       par l . innerHTML  =  " < i >Измененный</i>  НТМL-фай " ;   / /   что  изменилось !
                                                  л
                  Присвоение значений свойствам  textContent и  innerHTML являет­
                  ся  деструктивной операцией:  она заменят то, что находится в  эле-
       -
                  менте,  независимо от его  размера или  сложности.  Например, мож­
                  но заменить сразу все содержимое веб-страницы, изменив свойство
                  innerHTML элемента <body>!

       Созда и е   новых элементов DOM
               н
          Мы уже видели, как можно неявно создать новый узел DOM, изменив значение
       свойства innerHTML элемента. Но можно и явно создать новый узел, используя метод
       document . createElement. Он создает новый элемент, но не добавляет его в дерево
       DOM;  вам нужно будет сделать это самостоятельно позже.  Давайте создадим два
                                                                       =
       новых элемента абзаца; один станет первым абзацем в блоке <div  id " content " > ,
       а второй - последним.
       const  pl  =  document . createElement ( ' p ' ) ;
       const  р2  =  document . c reateElement ( ' p ' ) ;
       pl . t e xtContent   "Это  было  создано  динамически ! " ;
       p2 . textContent  =  "И  это  тоже  было  создано  динамически ! " ;


                                                  Манипупирование элементами DOM   299
   291   292   293   294   295   296   297   298   299   300   301