Пустая страница после document.write

208
14 апреля 2017, 22:56

Использую document.write, чтобы дописать html в страницу по нажатию на кнопку, но все существующие элементы куда-то исчезают. Почему, и что делать?

function useDocumentWrite(aText) { 
  document.write("<p>" + aText + "</p>"); 
} 
 
useDocumentWrite("when page is loading");
<button onclick="useDocumentWrite('after page loaded')">Use document.write</button>

Answer 1

Не вызывайте document.write после загрузки страницы.

https://developer.mozilla.org/en-US/docs/Web/API/Document/write

Note: as document.write writes to the document stream, calling document.write on a closed (loaded) document automatically calls document.open, which will clear the document.

Заметьте: так как document.write пишет в поток (stream) документа, вызов document.write закрытого (загруженного) документа автоматически вызывает document.open, что очищает документ.

Можно использовать, например, document.createElement или писать в DOM элемент, существующий в документе с самого начала.

function useCreateElement(aText) { 
  var newP = document.createElement("p"); 
  newP.innerText = aText; 
  document.body.appendChild(newP); 
} 
 
useCreateElement("when page is loading");
<button onclick="useCreateElement('after page loaded')">Use document.createElement</button>

READ ALSO
Как добиться копирования одним кликом — Clipboard?

Как добиться копирования одним кликом — Clipboard?

Никак не могу добиться копирования в буфер обмена данных из атрибута кнопки одним кликомКопирование происходит только на втором клике

234
Остаток от деления

Остаток от деления

Каким образом можно сокращать все числа например:(1220043, 12, 34325) в диапазон чисел от 1 до 4Пол дня ломаю голову и через циклы делил на 2, и через...

226
AjaxUpload, передать параметр динамически

AjaxUpload, передать параметр динамически

Модуль для импорта файла в опенкартеТаким способом загружается файл и посылает его в контроллер

211
Как вернуть значение в input?

Как вернуть значение в input?

Как можно не получить, а вернуть значение в input?

298