Перейти к содержимому

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

  • автор:

Вывод текста на страницу

Во время вызова функции результат выводится на новой странице (адрес тот же, но страница пустая, и на ней только результат).
Что делать? Как правильно выводить текст?

function someFunc()

Результат должен выводиться между тегами
Отслеживать
Roman Kravets
задан 11 июл 2016 в 14:55
Roman Kravets Roman Kravets
521 4 4 серебряных знака 23 23 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Согласно документации MDN, вызов document.write() в уже загруженном документе автоматически вызовет document.open() .
Вывод: document.write стоит использовать только там, где это действительно необходимо, и с пониманием принципа его работы.

Вывод результата в #rnd-nam с использованием выбора элемента по ID и заменой его текстового содержимого ( textContent ):

var button = document.getElementById("button"); var minElement = document.getElementById("min"); var maxElement = document.getElementById("max"); var result = document.getElementById("rnd-num"); function someFunc() < var min = minElement.value; var max = maxElement.value; var rand = min - 0.5 + Math.random() * (max - min + 1); rand = Math.round(rand); result.textContent = rand; >; button.addEventListener("click", someFunc);

Получаем данные из поля ввода с помощью input.value

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

Адрес e-mail добавлен в список получателей рассылки.

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

Нам поможет особое свойство, которое есть у полей ввода, — value . Допустим, на странице есть поле ввода input :

Босс проходил мимо и ввёл туда своё имя — Кекс. С помощью свойства value мы можем получить данные из этого поля ввода. А после, например, вывести их в консоль:

let input = document.querySelector('input'); console.log(input.value); // Выведет: Кекс

А ещё мы можем вывести данные из поля ввода прямо на страницу. Представим, что у нас на странице есть абзац, который мы нашли и сохранили в переменную paragraph . Мы можем сделать так:

paragraph.textContent = input.value;

И теперь то, что ввёл пользователь в поле input , отобразится на странице как текстовое содержимое элемента paragraph .

В нашем случае пользователь вводит свой адрес в поле с классом subscription-email . Найдём его и скажем JavaScript вывести полученные данные на страницу.

Почему бы не прочитать текст из поля ввода с помощью textContent ? Если мы попытаемся это сделать, то получим пустую строку. Для JavaScript поля формы не имеют текстового содержимого, их значения хранятся именно в value .

Хотите досконально разбираться в разметке, знать о доступности, строить сетки на флексбоксах? Записывайтесь на профессиональный курс по вёрстке первого уровня, проходящий c 29 января по 1 апреля 2024. До 27 ноября цена 19 900 ₽ 22 900 ₽

Перейти к заданию

  • index.html Сплит-режим
  • style.css Сплит-режим
  • script.js Сплит-режим

FlashNews!

На главную

email

Новая библиотека для создания графиков

Теперь вы можете создать дашборд за считанные секунды.

Что там у роботов?

В робототехнике происходит много интересного, эта новость могла бы быть об этом, но нет.


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 .

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 , но есть некоторые отличия:

Способ 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

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

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

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

      

Здесь к текстовому полю прикрепляется три обработчика для событий 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 последний символ.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar