document.write очищает страницу

Почему в коде ниже при вызовеdocument.write в функцииvalidator() элементы формы (флажок и кнопка) удалены с экрана?

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript">
            function validator() {
                if (document.myForm.thebox.checked)
                    document.write("checkBox is checked");
                else 
                    document.write("checkBox is NOT checked");
            }
        </script>
    </head>
    <body>
        <form name="myForm">
            <input type="checkbox" name ="thebox"/>
            <input type="button" onClick="validator()" name="validation" value="Press me for validation"/>
        </form>
    </body>
</html>

Ответы на вопрос(6)

document.write это не лучший способ, как если бы они были, да, ЛЮБЫЕ, манипуляции с DOM происходят или происходят уже тогдаdocument.write() не очень хорошо работает, так как изменяет исходный документ, но игнорирует любые изменения в дереве DOM.

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

function DisplayWrite(a) {
    if (document.body) {
        var x = document.createElement("div")
        document.body.appendChild(x)
        x.innerHTML ,= "</div>" + a
    } else {
        document.writeclear(a)
    }
}

var document = new Object()
document.writeclear = document.write
document.write = function(x) {DisplayWrite(x)}
 15 окт. 2016 г., 16:00
Я починил это! Исправлен Document.write!
 13 сент. 2018 г., 20:12
Я удалил</div> и только схватил строки изvar x ... вx.innerHTML ...и я обнаружил, что это работает в моем приложении. (Мне тоже пришлось добавить точку с запятой.)

document.write() Вызванный после загрузки страницы перезапишет текущий документ.

Вы хотите установить текст какого-либо элемента в вашем документе. Если вы добавите

<p id="message"></p>

до конца вашего тела, то вы можете позвонить

document.getElementById("message").innerHTML = "your text here";

Или с библиотекой jQuery

$("#message").html("your text here");
 03 июн. 2012 г., 23:13
Так должно быть$("body").append("your text here");
 03 июн. 2012 г., 23:18
изменил некоторые вещи вокруг - установив html для & lt; p & gt; с идентификатором вместо того, чтобы просто добавить к телу - немного чище таким образом

document.write after документ был загружен неявно звонкамиdocument.open, который очищает текущий документ. (Сравните с вызовомdocument.open во время загрузки страницы, которая вставляет строку в поток документов; это не очищает документ.)

document.write является одним из старейших пережитков древнего JavaScript, и его, как правило, следует избегать. Вместо этого вы, вероятно, захотите использовать методы манипуляции DOM для обновления документа.

 17 мар. 2019 г., 14:28
Это было именно то, что я искал: document.open (); Спасибо!

ты можешь использовать

alert("Checkbox is checked");

или, если вы будете отображать его на странице, сначала создайте элемент с идентификатором & quot; message & quot; (вы можете написать все, что захотите, но помните, идентификаторы должны быть уникальными на странице), например

<div id="message"></div>

а затем использовать

document.getElementById("message").innerHTML = "Checkbox is checked";

или если вы используете jQuery:

$("#message").html("Checkbox is checked");

или если вы используете браузер с поддержкой консоли (Firefox, Chrome и т. д.)

console.log("Checkbox is checked");

вместо

document.write("Checkbox is checked");
Решение Вопроса

document.write() используется для записи в документstream.

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

призваниеdocument.write() на закрытом потоке документов автоматически звонитdocument.open(), который очистит документ.

 03 июн. 2012 г., 23:13
этоdeveloper.mozilla.org/en/DOM/document.open Мозилла конкретная?
 13 июн. 2015 г., 08:55
@ JeromeWAGNER & # x2014; Нет. Прочитайтеspecification ссылка со страницы, на которую вы ссылались: & quot;Open a document stream for writing. If a document exists in the target, this method clears it.& Quot;

Ваш ответ на вопрос