Как редактировать html файл с помощью js

Обновлено: 18.05.2024

В этом руководстве мы расскажем, как модифицировать DOM, изменяя стили, классы HTML-элементов с помощью JavaScript. Это даст лучшее понимание того, как управлять основными элементами в DOM.

Обзор выбора элементов

Библиотека jQuery упростила процесс выбора одного или нескольких элементов и применения изменений ко всем одновременно.

Метод querySelector() является более надежным. Он позволяет выбрать элемент на странице с помощью любого типа селектора.

Получив доступ к элементу, можно изменить его отдельную часть. Например, текст, размещенный внутри него.

Но при доступе к нескольким элементам с помощью общего селектора, такого как определенный класс, нужно пройтись по всем ним. В приведенном ниже примере используются два элемента div с одинаковым значением атрибута class:

Мы будем использовать метод querySelectorAll() для захвата всех элементов с классом demo-class. А также forEach() для их перебора и изменения.

Также к определенному элементу можно получить доступ с помощью querySelectorAll():

Свойства и методы, используемые в примерах, приведенных в этой статье, часто будут привязаны к прослушивателям событий . Благодаря им они смогут реагировать на клики, наведения курсора и другие действия пользователей.

Примечание: Методы getElementsByClassName() и getElementsByTagName() возвращают наборы элементов HTML, не имеющие доступа к методу forEach(). Он использует querySelectorAll(). В этих случаях необходимо применять стандартный цикл for для перебора набора.

К пользовательским элементам, которые не являются частью стандарта HTML, добавляется префикс data-.

В JavaScript доступно четыре метода изменения атрибутов элемента:

Создадим новый HTML-файл с тегом <img>, использующим один атрибут. В нем мы будем ссылаться на изображение, доступное через URL-адрес.

При загрузке созданной веб-страницы в браузере ее HTML-код будет выглядеть следующим образом:

Обзор выбора элементов

Теперь протестируем все методы для обработки атрибутов.

Удалим атрибут src и значение, связанные с тегом <img>. Но можно сбросить этот атрибут и назначить ему другое изображение с помощью img.setAttribute():

Также можно изменить атрибут напрямую, присвоив ему новое значение в качестве свойства элемента:

Любой атрибут может быть отредактирован так же, как и с помощью описанных выше методов.

Методы hasAttribute() и getAttribute() используются с условными операторами. Методы setAttribute() и removeAttribute() также применяются для изменения структуры DOM.

Атрибут class соответствует селектору класса CSS . CSS-классы используются для применения стилей к нескольким элементам. В отличие от идентификаторов, которые могут существовать на веб-странице только в единственном экземпляре.

В JavaScript есть свойства className и classList , предназначенные для работы с атрибутом class.

Создадим еще один HTML-файл для демонстрации перечисленных выше методов.

После открытия файла classes.html в браузере вы увидите следующее:

Свойство className было введено для предотвращения конфликтов с ключевым словом class, которое используется в JavaScript. Вы можете использовать className, чтобы присвоить значение непосредственно классу.

Мы присвоили первому элементу div класс warning, определенный в CSS. Вы получите следующий результат:


Обратите внимание, что если какие-либо классы уже используются в элементе, это переопределит их. Можно добавить несколько классов, разделенных пробелом, используя свойство className.

Другой способ изменить классы – использовать свойство classList , которое включает в себя несколько полезных методов. Они похожи на JQuery-методы addClass, removeClass и toggleClass.

После выполнения указанных выше методов веб-страница будет выглядеть следующим образом:


Использование classList.add() добавит новый класс в список существующих. Также можно использовать setAttribute для изменения класса элемента.

Изменение стилей

Создадим простой пример для демонстрации изменения стилей элементов с помощью JavaScript. Ниже приведен новый HTML-файл. Он включает в себя div с несколькими встроенными стилями, применяемыми для отображения квадрата.

При открытии файла styles.html в браузере вы увидите следующее:

Изменение стилей

Один из вариантов редактирования стилей – использование метода setAttribute().

Но подобный подход удалит все существующие для элемента встроенные стили. Поэтому лучше напрямую использовать атрибут style:

Обратите внимание, что в методах JavaScript используется другие правила написания свойств CSS. Например, вместо text-align мы будем использовать textAlign.

После этого окончательный результат будет выглядеть следующим образом:

Изменение стилей - 2

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

Заключение

В этом руководстве мы рассказали, как получить доступ, изменить и удалить атрибуты HTML-элементов в DOM с помощью JavaScript. А также как добавлять и заменять CSS-классы элемента, редактировать встроенные CSS- стили. Для получения дополнительной информации ознакомьтесь с документацией по атрибутам от Mozilla Developer Network.

Пожалуйста, опубликуйте свои отзывы по текущей теме статьи. Мы очень благодарим вас за ваши комментарии, дизлайки, подписки, отклики, лайки!

Пожалуйста, опубликуйте ваши мнения по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, отклики, дизлайки, подписки, лайки!

При написании веб-страниц и приложений вам придётся часто каким-либо образом управлять структурой документа. Обычно это делается с помощью Document Object Model (DOM), набора API для управления разметкой HTML и стилями, которая сильно использует объект Document . В этой статье мы подробно рассмотрим, как использовать DOM и некоторые другие интересные API, которые могут изменить вашу среду интересными способами.

Предпосылки: Базовая компьютерная грамотность, базовое понимание HTML, CSS и JavaScript - включая объекты JavaScript.
Задача: Познакомиться с основными DOM API и другими API, обычно связанными с DOM, и манипулированием документами

Важные элементы веб-браузера

Веб-браузеры - очень сложные части программного обеспечения с множеством движущихся частей, многие из которых не могут контролироваться или управляться веб-разработчиком с использованием JavaScript. Вы можете подумать, что такие ограничения - это плохо, но браузеры заблокированы по уважительным причинам (в основном ради безопасности). Представьте себе, что веб-сайт может получить доступ к вашим сохранённым паролям или другой конфиденциальной информации и войти на веб-сайты так, как если бы это были вы?

Несмотря на ограничения, Web API по-прежнему дают нам доступ к множеству функциональных возможностей, которые позволяют нам многое делать с веб-страницами. Есть несколько действительно очевидных моментов, на которые вы будете регулярно ссылаться в своём коде. Рассмотрим следующую диаграмму, которая представляет основные части браузера, непосредственно участвующие в просмотре веб-страниц:


  • Окно - это вкладка браузера, в которую загружается веб-страница; это представлено в JavaScript объектом Window . Используя методы, доступные для этого объекта, вы можете делать такие вещи, как возврат размера окна (см. Window.innerWidth (en-US) и Window.innerHeight ), манипулировать документом, загруженным в этот window, хранить данные, специфичные для этого документа на стороне клиента (например, используя локальную базу данных или другой механизм хранения), присоединить обработчик событий (event handler) к текущему окну и многое другое.
  • Навигатор представляет состояние и идентификатор браузера (т. е. пользовательский агент), как он существует в Интернете. В JavaScript это представлено объектом Navigator . Вы можете использовать этот объект для извлечения таких вещей, как геолокационная информация, предпочтительный язык пользователя, медиапоток с веб-камеры пользователя и т. д.
  • Документ (представленный DOM в браузерах) представляет собой фактическую страницу, загруженную в окно, и представлен в JavaScript объектом Document . Вы можете использовать этот объект для возврата и обработки информации о HTML и CSS, содержащей документ, например, получить ссылку на элемент в DOM, изменить его текстовый контент, применить к нему новые стили, создать новые элементы и добавить их в текущий элемент как дочерний элемент, или даже вообще удалить его.

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

Объектная модель документа

Документ, загруженный в каждый из ваших вкладок браузера, представлен объектной моделью документа. Это представление «древовидной структуры», созданное браузером, которое позволяет легко получить доступ к структуре HTML с помощью языков программирования - например, сам браузер использует его для применения стиля и другой информации к правильным элементам, поскольку он отображает страницу, а разработчики (как Вы) могут манипулировать DOM с JavaScript после того, как страница была отображена.

Мы создали простую страницу примера в dom-example.html (см. также live). Попробуйте открыть это в своём браузере - это очень простая страница, содержащая элемент <section> , внутри которого вы можете найти изображение и абзац со ссылкой внутри. Исходный код HTML выглядит так:

DOM, с другой стороны, выглядит так:


Примечание. Эта диаграмма дерева DOM была создана с использованием Live DOM viewer Яна Хиксона.

Вы можете видеть здесь, что каждый элемент и бит текста в документе имеют свою собственную запись в дереве - каждый из них называется узлом (node). Вы также столкнётесь с различными терминами, используемыми для описания типа узла, и их положением в дереве относительно друг друга:

  • Element node: элемент, как он существует в DOM.
  • Root node: верхний узел в дереве, который в случае HTML всегда является узлом HTML (другие словари разметки, такие как SVG и пользовательский XML, будут иметь разные корневые элементы)..
  • Child node: узел непосредственно внутри другого узла. Например, IMG является дочерним элементом SECTION в приведённом выше примере.
  • Descendant node (узел потомок): узел внутри дочернего элемента. Например, IMG является дочерним элементом SECTION в приведённом выше примере, и он также является потомком для родителя SECTION . IMG не является ребёнком BODY , так как он находится на двух уровнях ниже дерева в дереве, но он является потомком BODY .
  • Parent node: узел, в котором текущий узел. Например, BODY является родительским узлом SECTION в приведённом выше примере.
  • Sibling nodes (одноуровневый узел): узлы, которые расположены на одном уровне в дереве DOM. Например, IMG и P являются братьями и сёстрами в приведённом выше примере.
  • Text node: узел, содержащий текстовую строку.

Полезно ознакомиться с этой терминологией перед тем, как работать с DOM, поскольку некоторые термины кода, с которыми вы столкнётесь, используют их.. Возможно, вы уже сталкивались с ними, если вы изучали CSS (например, селектор потомков, дочерний селектор).

Активное обучение: основы управления структурой DOM

Чтобы начать изучение по управлению структуры DOM, давайте начнём с практического примера.

  1. Возьмите локальную копию страницы dom-example.html page и изображение, которое вместе с ним.
  2. Добавьте элемент <script></script> чуть выше закрывающего тега </body> .
  3. Чтобы управлять элементом внутри DOM, вам сначала нужно выбрать его и сохранить ссылку на него внутри переменной. Внутри вашего скриптового элемента добавьте следующую строку:

Обратите внимание, что, как и во многих вещах в JavaScript, существует множество способов выбора элемента и хранения ссылки на него в переменной. Document.querySelector() - рекомендуемый современный подход, который считается удобным, потому что он позволяет вам выбирать элементы с помощью селекторов CSS. Вышеупомянутый запрос querySelector() будет соответствовать первому элементу <a> , который появляется в документе. Если вы хотите совместить и делать что-то с несколькими элементами, вы можете использовать Document.querySelectorAll() , который соответствует каждому элементу документа, который соответствует селектору и сохраняет ссылки на них в массиве массива-подобном объекте, называемом NodeList.

Существуют более старые методы для захвата ссылок на элементы, например:

    , который выбирает элемент с заданным значением атрибута id , например <p >Мой абзац</p> . Идентификатор передаётся функции как параметр, т.е. var elementRef = document.getElementById('myId') . , который возвращает массив, содержащий все элементы на странице данного типа, например <p> , <a> и т.д. Тип элемента передаётся к функции в качестве параметра, то есть var elementRefArray = document.getElementsByTagName('p') .

Эти два работают в более старых браузерах, чем современные методы, такие как querySelector() , но не так удобны. Осмотритесь и вы увидите, что ещё можно найти!

Создание и размещение новых узлов

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

    Возвращаясь к текущему примеру, давайте начнём с захвата ссылки на наш элемент <section> - добавьте следующий код внизу существующего скрипта (сделайте то же самое с другими строками):

Это большая часть того, что вам нужно для добавления узлов в DOM - вы будете использовать эти методы при построении динамических интерфейсов (мы рассмотрим некоторые примеры позже).

Перемещение и удаление элементов

Могут быть моменты, когда вы хотите переместить узлы или вообще удалить их из DOM. Это вполне возможно.

Если бы мы хотели переместить абзац со ссылкой внутри него в нижней части раздела, мы могли бы просто сделать это:

Это переводит абзац вниз в нижнюю часть раздела. Вы могли подумать, что это сделает вторую копию, но это не так - linkPara - ссылка на единственную копию этого абзаца. Если вы хотите сделать копию и добавить её также, вам нужно будет использовать Node.cloneNode() .

Удаление узла довольно просто, по крайней мере, когда у вас есть ссылка на удаляемый узел и его родительский элемент. В нашем случае мы просто используем Node.removeChild() , например:

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

Попробуйте добавить вышеуказанные строки в свой код.

Управление стилями

Можно управлять стилями CSS с помощью JavaScript различными способами.

Для начала вы можете получить список всех таблиц стилей, прикреплённых к документу, с помощью Document.stylesheets (en-US) , который возвращает массив объектов CSSStyleSheet . Затем вы можете добавлять / удалять стили по желанию. Однако мы не будем расширять эти функции, потому что они являются несколько архаичным и трудным способом манипулирования стилем. Есть гораздо более простые способы.

Первый способ - добавить встроенные стили непосредственно на элементы, которые вы хотите динамически стилизовать. Это делается с помощью свойства HTMLElement.style (en-US) , которое содержит встроенную информацию о стиле для каждого элемента документа. Вы можете установить свойства этого объекта для непосредственного обновления стилей элементов.

    В качестве примера попробуйте добавить эти строки в наш текущий пример:

Примечание: Обратите внимание на то, как версии свойств JavaScript стилей CSS пишутся в нижнем регистре верблюжьего стиля (lower camel case), в то время как версии свойств стилей CSS используют дефисы (например, backgroundColor и background-color ). Убедитесь, что вы не перепутали их, иначе это не сработает.

Существует ещё один распространённый способ динамического управления стилями вашего документа, который мы рассмотрим сейчас.

  1. Удалите предыдущие пять строк, добавленных в JavaScript.
  2. Добавьте в свой HTML-код следующее: <head> :
  3. Теперь мы перейдём к очень полезному методу для общего манипулирования HTML - Element.setAttribute() - это принимает два аргумента, атрибут, который вы хотите установить для элемента, и значение, которое вы хотите для его установки. В этом случае мы укажем имя класса выделения в нашем абзаце:

Какой метод вы выбираете, зависит от вас; оба имеют свои преимущества и недостатки. Первый метод принимает меньше настроек и хорош для простого использования, тогда как второй метод более пурист (без смешивания CSS и JavaScript, без встроенных стилей, которые рассматриваются как плохая практика). Когда вы начнёте создавать более крупные приложения, вы, вероятно, начнёте использовать второй метод больше, но это действительно зависит от вас.

На данный момент мы не сделали ничего полезного! Нет смысла использовать JavaScript для создания статического контента - вы можете просто записать его в свой HTML и не использовать JavaScript. Это сложнее, чем HTML, и для создания вашего контента с помощью JavaScript также есть другие связанные с ним проблемы (например, не читаемые поисковыми системами).

В следующих параграфах мы рассмотрим ещё несколько практических применений DOM API.

Активное обучение: Получение полезной информации из объекта Window

До сих пор мы действительно смотрели на использование функций Node и Document для управления документами, но нет причин, по которым вы не можете получить данные из других источников и использовать его в пользовательском интерфейсе. Вспомните нашу простую демонстрацию maps-example.html из последней статьи - там мы извлекли некоторые данные о местоположении и использовали её для отображения карты вашей области. Вам просто нужно убедиться, что ваши данные в правильном формате; JavaScript упрощает работу, чем многие другие языки, будучи слабо типизированным - например, числа автоматически преобразуются в строки, когда вы хотите распечатать их на экране.

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

Для начала создайте локальную копию наших демо-файлов window-resize-example.html и bgtile.jpg. Откройте его и посмотрите - вы увидите, что у нас есть элемент <div> , который покрывает небольшую часть экрана, на который нанесена фоновая плитка. Мы будем использовать это, чтобы представить нашу область пользовательского интерфейса приложения.

    Прежде всего, давайте возьмём ссылку на div, а затем возьмём ширину и высоту окна просмотра (внутреннее окно, где отображается ваш документ) и сохраните их в переменных - эти два значения удобно содержатся в Window.innerWidth (en-US) и Window.innerHeight . Добавьте следующие строки внутри существующего элемента <script> :

Примечание. Если у вас возникла проблема, посмотрите на наш законченный пример изменения размера окна (см. также live).

Активное обучение: динамический список покупок

Чтобы завершить статью, мы хотели бы задать вам небольшой вызов - мы хотим сделать простой пример списка покупок, который позволяет динамически добавлять элементы в список с помощью ввода формы и кнопки. Когда вы добавляете элемент на вход и нажимаете кнопку:

Готовое демо будет выглядеть примерно так:


Чтобы завершить упражнение, выполните следующие действия и убедитесь, что список ведёт себя так, как описано выше.

  1. Для начала загрузите копию нашего начального файла shopping-list.html и скопируйте его где-нибудь. Вы увидите, что у него есть минимальный CSS, список с меткой, ввод и кнопка, пустой список и элемент <script> . Вы будете делать все свои дополнения внутри скрипта.
  2. Создайте три переменные, содержащие ссылки на список ( <ul> , <input> и <button> элементы.
  3. Создайте function, которая будет запускаться в ответ на нажатие кнопки.
  4. Внутри тела функции начните с сохранения текущего значения (value) входного элемента в переменной.
  5. Затем очистите элемент ввода, установив его значение в пустую строку — '' .
  6. Создайте три новых элемента - элемент списка ( <li> ), <span> и <button> и сохраните их в переменных.
  7. Добавьте диапазон и кнопку в качестве дочерних элементов списка.
  8. Установите текстовое содержимое диапазона на значение входного элемента, которое вы сохранили ранее, и текстовое содержимое кнопки «Удалить».
  9. Добавить элемент списка в качестве дочернего списка.
  10. Прикрепите обработчик события к кнопке удаления, чтобы при щелчке удалял весь элемент списка, внутри которого он находится.
  11. Наконец, используйте метод focus() , чтобы сфокусировать входной элемент, готовый для входа в следующий элемент списка покупок.

Примечание: Если у вас возникла действительно сложная проблема, взгляните на наши примеры finished shopping list (see it running live also.)

Краткая информация

Мы закончили изучение документа и манипулирования DOM. На этом этапе вы должны понимать, что важная часть веб-браузера связана с управлением документами и другими аспектами веб-интерфейса пользователя. Самое главное, вы должны понять, что такое Document Object Model, и как манипулировать им для создания полезных функций.

Дополнительная информация

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


Как изменить через JS color одного элемента HTML если id второго элемента сейчас в URL?
Доброго времени суток! Подскажите ,пожалуйста, код JS с помощью которого можно изменить color.

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

Как присвоить переменной id элемента и затем изменить класс этого элемента
подскажите пожалуста, как по слику присвоить переменной id элемента (в моем случае элемент&lt;td&gt;) и.

grigandal1580, ну и по какому событию его менять?
Fedor92, мне нужно не на php, а именно на javascript код Fedor92, мне нужно не на php, а именно на javascript код А ну понятно, куда я влез с php. Сорян, больше не пристаю.

Но вы помогли, нужная строка там есть

Добавлено через 10 минут
Fedor92, Но вы помогли, нужная строка там есть

Добавлено через 2 часа 55 минут
Проблема так и не решена

grigandal1580, ахахах. Где вы увидели в предложенном коде php? Там как раз решение на js. grigandal1580, ахахах. Где вы увидели в предложенном коде php? Там как раз решение на js. да угорают пасаны Fedor92 вообще отжигает, а grigandal1580 фразой Но вы помогли, нужная строка там есть вообще убил

Alexodiy, причем, нужная строка это <script type="text/javascript"> :jokingly:


Изменить текст текущего элемента в comboBox
Изменить текст текущего элемента в comboBox Например: есть comboBox, у него уже выбран элемент с.

Текст HTML распознавался как просто текст, а не HTML код
Здравствуйте! Подскажите пожалуйста, как сделать так, чтобы HTML текст не распознавался браузером.

Изменить class элемента с помощью onmouseover, например изменить фон ячейки в таблице
Можно ли изменить class элемента, с помощью onmouseover, например изменить фон ячейки в таблице

Как вытащить текст со Html странички? Html Agility Pack
Всё очень просто как вытащить текст с Html странички с помощью Html Agility Pack? К примеру у нас.


Как к нескольким файлам html подключить текст из другого html через php?
Ребят, расскажите пожалуйста как к нескольким файлам html через php подключить текст из другого.


HTML всплывающий текст при наведении / нажатии на текст
Здравствуйте! Нужно сделать так, что бы при наведении или нажатии на текст всплывал другой текст.

Изменение стилей через JavaScript

Как правило, начинающие изучать веб-разработку люди уже знают, как легко можно поменять внешний вид элемента с помощью CSS стилей. Но менять стили можно и через JavaScript. Когда же наступает необходимость это делать через JavaScript? Первое, что приходит в голову - это для создании анимаций.

Изменение стилей через CSS

У нас есть черный заголовок в розовой рамке. За внешний вида заголовка отвечают CSS стили.

//CSS код
.container width: 400px;
border: 10px solid plum;
margin: 20px auto;
>

Изменение стилей через JavaScript.

Если мы хотим изменит цвет у заголовка с черного на фиолетовый, то идем в CSS код и вручную заменяем значение у свойства color.

Заголовок стал фиолетовый.

Изменение стилей через JavaScript.

Изменение стилей через JavaScript

Но мы хотим большего взаимодействия с пользователем. Чтобы цвет заголовка менялся вследствии наступления какого-нибудь события (клика мыши). Изменим наш заголовок на фиолетовый через JavaScript. Действуем уже по отработанному алгоритму:

  1. Получить элемент
  2. Обратится к свойству элемента
  3. Установит новое значение

Найдем заголовок по названию селектора и поместим его в переменную headingElement для дальнейших манипуляций. Затем получим доступ к его атрибуту style и укажем нужное нам свойство color, которое собираемся изменить. То есть, мы обращаемся к свойству color у стиля того элемента, который лежит а переменной headingElement и устанавливаем ему новое значение - фиолетовый цвет. В записи мы используем две точки, потому что у нас два объекта. Первый объект сам элемент h1, а второй объект - style, в свойствах которого хранятся все стили элемента h1.

Цвет заголовка опять поменялся на фиолетовый.

Изменение стилей через JavaScript.

Названия свойств

Теперь попробуем изменить цвет рамки у заголовка. Действуем по аналогии с заменой цвета. Получаем элемент container, у которого будем менять цвет свойства border-color с розового на черный.

Теперь наш обновленный JavaScript сработал. Рамка у заголовка окрасилась в черный цвет.

Изменение стилей через JavaScript.

Заключение

Зачем вообще нужно изменять элементы на странице с помощью JavaScript? Не проще ли сразу создать HTML страницу с необходимым CSSкодом? Все дело в том, что JavaScript позволяет реагировать на события, производимые пользователем и менять CSS свойства прямо на ходу. Во взаимодействии с пользователем и заключается вся сила языка JavaScript. Например вы можете создавать формы и проверять, что туда вводит пользователь. Просто создавать HTML страницы и стилизовать их согласно макету заказчика, недостаточно в современной веб-разработке. Вы можете возразить, что для этого есть другие специалисты - JavaScript программисты. Однако в реальном мире, заказчики предпочитают выбирать исполнителей с опцией «все включено», чтобы цепочка исполнителей была, как можно короче. Поэтому изучайте JavaScript на моем видеокурсе, если вы хотите стать востребованным фронтенд-разработчиком.


Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 0 ):

Читайте также: