17.07.2026

© FlashNews!


JavaScript

let page = document.querySelector(‘.page’); let themeButton = document.querySelector(‘.theme-button’); themeButton.onclick = function() < page.classList.toggle('light-theme'); page.classList.toggle('dark-theme'); >; let message = document.querySelector(‘.subscription-message’); let form = document.querySelector(‘.subscription’); // Объявите переменную здесь form.onsubmit = function(evt) < evt.preventDefault(); // Измените значение textContent на следующей строке message.textContent = 'Форма отправлена!'; >;

Показать ответ

Спасибо! Мы скоро всё исправим)

Как записать строку из JavaScript в HTML

Довольно часто приходится сталкиваться с необходимостью записать некий текст, а иногда и html-код из JS в какой-либо элемент html-разметки. Существует несколько способов это сделать. Давайте рассмотрим их подробнее.

Способ 1. Использование метода document.write

Метод document.write существует в JavaScript с незапамятных времен и позволяет вывести не только текст, но и любые теги разметки на вашу html-страницу, например:

Использование метода document.write()
document . write ( «Просто текст и перевод строки
Вторая строка текста» ) ;
document . write ( ‘

Div c классом .my-div

‘ ) ;

Результат внедрения этого скрипта будет таким:

Все бы хорошо, но у этого метода есть одна особенность — он хорошо работает в процессе загрузки html-страницы. Метод document.write вставляет текст в то место html-разметки, где был вызван, ещё до формирования DOM-структуры, которую браузер строит в процессе парсинга страницы. Поэтому строки, записанные тем кодом, который приведен выше, внедряется в html-документ так, как если бы они присутствовали изначально в разметке.

Хуже обстоит дело с попытками использовать метод document.write при клике на кнопку, например. В этом случае текущая страница заменяется на новую с тем текстом, который вы использовали внутри скобок document.write . Попробуйте сами в примере ниже.

Вызов метода document.write()

Существует также метод document.writeln() , который отличается от document.write() тем, что добавляет символ перевода строки «\n» . В большинстве случаев это никак визуально не видно, т.к. в html-коде для перевода строки нужен тег
, а не перевод строки символом \n . Разницу можно заметить в таком элементе формы, как textarea , где перевод строки как раз выполняется с помощью этого символа.

Для сравнения сделаем несколько строк текста без всяких тегов с помощью обоих методов, а затем применим их для вывода текста внутри textarea .

Метод document.writeln
JavaScript
< h2 >Метод document . write < / h2 >
document . write ( «Первая строка текста в структуре html» ) ;
document . write ( «Вторая строка текста в структуре html» ) ;
document . write ( «
document . write ( «Первая строка текста» ) ;
document . write ( «Вторая строка текста» ) ;
document . write ( «» ) ;
< h2 >Метод document . writeln < / h2 >
document . writeln ( «Первая строка текста в структуре html» ) ;
document . writeln ( «Вторая строка текста в структуре html» ) ;
document . writeln ( «
document . writeln ( «Первая строка текста» ) ;
document . writeln ( «Вторая строка текста» ) ;
document . writeln ( «» ) ;

В примере можно заметить, что при использовании document.writeln() появляется дополнительный пробел между двумя строками в обычном тексте и перевод строки внутри textarea .

Метод document.write

Метод document.writeln

Оба этих метода можно использовать, когда вы учите JavaScript, для того чтобы вывести массив, например, или какую-либо разметку на страницу, а не в консоль. На html-странице, которая уже сформирована, вряд ли стоит применять document.write() или document.writeln() , т.к. они перезапишут ее содержимое.

И мы опять возвращаемся к популярному вопросу «Как записать строку из JS в HTML?». И переходим к свойству innerHTML .

Способ 2. Использование свойства innerHTML

Для любого элемента можно получить и записать свойство innerHTML , которое в соответствии с переводом с английского позволяет управлять внутренним html-кодом выбранного элемента. Это свойство замещает весь html-код, который был внутри выбранного элемента, на тот, который вы присвоили ему в качестве значения.

Например, такой код сотрет все содержимое данной статьи:

JavaScript
let section = document . querySelector ( ‘section’ ) ;
section . innerHTML = » ;
section . innerHTML += ` < button class = "btn" onclick = "location.reload()" type = "button" >
Обновить страницу < / button >` ;
Очистить статью

Поскольку свойство innerHTML принимает в качестве значения строку, вы вполне можете воспользоваться оператором «+» для конкатенации строк и формировать содержимое элемента таким образом:

Конкатенация строк в innerHTML
JavaScript
elem . innerHTML = «Первая строка текста
» ;
elem . innerHTML += «Вторая строка текста
» ;
elem . innerHTML += «Третья строка текста» ;

Следующий пример позволяет заменить внутреннее содержимое элемента (абзаца) с id=»temp-text» , который содержит внутренние теги, на другой текст с внутренней разметкой.

Использование свойства innerHTML
JavaScript
< p id = "temp-text" >Текст с < strong >жирным < / strong >и < em >курсивным < / em >форматированием . < / p >
< button type = "button" class = "btn" onclick = "getHTML()" >Получить html — разметку абзаца < / button >
< button type = "button" class = "btn" onclick = "changeHTML()" >Изменить html — разметку абзаца < / button >
let elem = document . getElementById ( ‘temp-text’ ) ;
function getHTML ( ) < alert ( elem . innerHTML ) ; function changeHTML ( ) < elem . innerHTML = ` < span style = "color: red; font-style: italic" >Измененный текст < /span>
абзаца с html-разметкой ` ;

Читать:
Как сделать на айфоне два времени на экране

Нажмите на кнопку «Получить html-разметку абзаца» до и после замены текста — и вы увидите внутренние теги, которые при добавлении внутрь выбранного абзаца отображаются в соответствии с правилами css и html.

Текст с жирным и курсивным форматированием.

Получить html-разметку абзаца Изменить html-разметку абзаца

Есть еще одно отличие свойства innerHTML от метода document.write . Оно заключается в том, что при ошибочном добавлении тегов, в innerHTML браузер скорректирует синтаксис так, чтобы все теги были закрыты.

В предыдущем примере была допущена такая ошибка — не закрыт тег ,- и браузер это исправил, добавив 2 по сути ненужных тега, но при этом сохранив валидность html-кода.

Ошибки в innerHTML

Особенности поведения свойства innerHTML

Нельзя вставлять с помощью innerHTML теги — такой код не выполнится. Хотя есть и обходной способ, когда можно использовать для этой цели события. Подробнее можно прочитать в статье на MDN.

Также свойство innerHTML отсутствует у элементов без содержимого (изображения,
, ), оно может использоваться только для элементов с открывающим и закрывающим тегом.

В приведенном ниже примере мы попытаемся заместить изображение абзацем, но безуспешно.

innerHTML не работает для изображений
JavaScript
< img src = "images/headphones-02.jpg" alt = "headphones" id = "headphones" style = "display:block; margin-bottom: 15px; box-shadow: 0 0 6px #000;" >
Заменить изображение < / button >
let headphones = document . getElementById ( ‘headphones’ ) ;
function innerImg ( ) < headphones . innerHTML = '

Теперь это абзац

‘ ;

Попробуйте сами. Ничего не происходит, не так ли?

headphones

Заменить изображение

Способ 3. Свойство textContent

В том случае, когда вам НЕ нужно записывать строку из JS в html с дополнительной разметкой в виде html-тегов, лучше воспользоваться свойством textContent . Оно позволяет манипулировать только текстом элемента.

В примере ниже вы можете добавить текст с тегами в текстовом поле. Этот текст отобразится в блоке с рамкой, когда вы будете печатать. Если нажать на кнопку «innerHTML» , вы увидите преобразование тегов в текст с форматированием.

Измените этот текст

Так выглядит этот пример при применении свойства textContent


Тот же текст + теги, но при применении свойства innerHTML

Особенности поведения свойства textContent

  • textContent вернет null , если элемент является документом, типом документа, или его описанием. Для получения всего текста и CDATA-данных во всём документе можно использовать это свойство в таком виде: document.documentElement.textContent .
  • Если элемент представляет собой CDATA, комментарий или текстовый элемент, свойство textContent возвращает текст внутри узла в виде строки (т.н. nodeValue ).
  • Для элементов других типов textContent возвращает конкатенацию свойств textContent всех дочерних узлов, исключая комментарии и строки кода. Т.е. происходит склеивание текста всех вложенных элементов. Если узел не имеет дочерних узлов, будет возвращена пустая строка.
  • Установка данного значения удаляет все дочерние узлы и заменяет их единичным текстовым узлом с указанным значением.

Пример ниже демонстрирует, каким образом отображается текст блока со вложенными (дочерними) элементами при использовании свойства textContent .

Block Header

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Consequuntur maxime, cumque facilis eos itaque inventore rerum.

Свойство textContent для блока с вложенными элементами
< h3 >Block Header < / h3 >
< p >Lorem ipsum dolor sit amet , consectetur adipisicing elit . < / p >
< p >Consequuntur maxime , cumque facilis eos itaque inventore rerum . < / p >
let textBlock = document . getElementById ( ‘textBlock’ ) ,
output = document . getElementById ( ‘output’ ) ,
btnBlock = document . getElementById ( ‘btnBlock’ ) ;
btnBlock . onclick = function ( ) < output . textContent = textBlock . textContent

Способ 4. Свойство innerText

Свойство innerText подобно innerHTML , но не подразумевает вставку html-тегов, только текст. И с этой точки зрения оно работает так же, как и свойство textContent . Только у них несколько разная поддержка браузерами. По данным caniuse.com innerText поддерживает большинство браузеров, за исключением Firefox до 44 версии, доля использования которого в мире на данный момент составляет 0,17%.

Поддержка свойства innerText

Свойство textContent имеет также очень приличную поддержку браузерами, но не работает в IE версий 6-8, которыми на данный момент пользуется 0,17% от всех компьютеров в мире.

Поддержка свойства textContent

Свойство innerText было введено в свое время Internet Explorer-ом, а затем в 2016 было внедрено в стандарт HTML после адаптации всеми ведущими браузерами. По своим функциям это свойство подобно тексту, полученному пользователем при выделении содержимого элемента курсором и копировании его в буфер обмена. Работает innerText по тому же принципу, что и textContent , но есть некоторые отличия:

  • textContent получает содержимое всех элементов, включая и , тогда как innerText этого не делает.
  • innerText умеет считывать стили и не возвращает содержимое скрытых элементов, тогда как textContent этого не делает.
  • Метод innerText позволяет получить CSS, а textContent — нет.

Способ 5. Свойство outerHTML

Свойство outerHTML также, как и innerText , было введено в InternetExplorer и является нестандартным, хотя на данный момент.

Поддержка свойства outerHTML

Давайте посмотрим, что нам вернет свойство outerHTML на примере.

outerHTML property

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Consequuntur maxime, cumque facilis eos itaque inventore rerum.

Как вывести текст на страницу javascript

Для ввода простейшей текстовой информации предназначены элементы

Данный элемент поддерживает ряд событий, в частности:

  • focus : происходит при получении фокуса
  • blur : происходит при потере фокуса
  • change : происходит при изменении значения поля
  • input : происходит при изменении значения поля
  • select : происходит при выделении текста в текстовом поле
  • keydown : происходит при нажатии клавиши клавиатуры
  • keypress : происходит при нажатии клавиши клавиатуры для печатаемых символов
  • keyup : происходит при отпускании ранее нажатой клавиши клавиатуры

Применим ряд событий:

      

Здесь к текстовому полю прикрепляется три обработчика для событий blur, focus и change. Обработка события change позволяет сформировать что-то вроде привязки: при изменении текста весь текст отображается в блоке printBlock. Но надо учитывать, что событие change возникает не сразу после изменения текста, а после потери им фокуса.

Обработка события потери фокуса blur позволяет провести валидацию введенного значения. Например, в данном случае если текст состоит из пробелов или не был введен, то окрашиваем границу поля в красный цвет.

Изменение текста в JavaScript

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

const keyBox = document.search.key; // обработчик изменения текста function oninput(e) < // получаем элемент printBlock const printBlock = document.getElementById("printBlock"); // получаем новое значение const val = e.target.value; // установка значения printBlock.textContent = val; >keyBox.addEventListener("input", oninput);

Поле ввода пароля

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

    METANIT.COM   

Получение пароля с помощью кода JavaScript

Скрытое поле

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

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

Элемент textarea

Для создания многострочных текстовых полей используется элемент textarea :

Данные элемент генерирует все те же самые события, что и обычное текстовое поле:

         

Здесь к текстовому полю прикрепляются обработчики для событий keypress и keydown. В обработчике keypress получаем введенный символ с помощью конвертации числового кода клавиши в строку:

const val = String.fromCharCode(e.keyCode);

Затем символ добавляется к содержимому блока printBlock.

Событие keypress возникает при нажатии на клавиши для печатаемых символов, то такие символы отображаются в текстовом поле. Однако есть и другие клавиши, которые оказывают влияние на текстовое поле, но они не дают отображаемого символа, поэтому не отслеживаются событием keypress. К таким клавишам относится клавиша Backspace, которая удаляет последний символ. И для ее отслеживания также обрабатываем событие keydown. В обработчике keydown удаляем из строки в блоке printBlock последний символ.

Похожие записи

Что такое resampling

admin

дан фрагмент таблицы истинности выражения f какое выражение соответствует f

admin

Как очистить историю сообщений в дискорде в лс

admin