Javascript Document.write清除页面

Javascript Document.write清除页面,javascript,html,dom-events,Javascript,Html,Dom Events,调用文档时,为什么要在下面的代码中。在函数validator()中写入,表单元素(复选框和按钮)将从屏幕中删除 <!DOCTYPE html> <html> <head> <script type="text/javascript"> function validator() { if (document.myForm.thebox.checked)

调用
文档时,为什么要在下面的代码中。在函数
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>

函数验证器(){
if(document.myForm.thebox.checked)
文件。写入(“选中复选框”);
其他的
文件。写入(“未选中复选框”);
}

文档。写入
并不是最好的方式,就像有任何、是的任何DOM操作正在发生或已经发生过一样。写入()
效果不太好,因为它修改了原始文档,但忽略了对DOM树的任何更改

还要记住,浏览器主要从DOM显示内容,而不是从原始文档

document.write()
用于写入文档流

在您的情况下,在调用onClick处理程序时,流很可能已经关闭,因为您的文档已经完成加载


在关闭的文档流上调用
document.write()
会自动调用
document.open()
,这将清除文档。

页面加载后调用的
document.write()
将覆盖当前文档

您希望设置文档中某个元素的文本。如果你加一个

<p id="message"></p>
或者使用jQuery库

$("#message").html("your text here");

调用
document.write
在加载文档后隐式调用
document.open
,清除当前文档。(与在页面加载时调用
document.open
相比,这会将字符串插入文档流;它不会清除文档。)


document.write
是古代JavaScript最古老的遗迹之一,通常应该避免使用。相反,您可能希望使用DOM管理方法来更新文档。

您可以使用

alert("Checkbox is checked");
或者,如果要在页面上显示它,请首先创建一个id为“message”的元素(您可以编写任何您想要的内容,但请记住,id在页面上必须是唯一的),如

或者,如果您正在使用jQuery:

$("#message").html("Checkbox is checked");
或者如果您使用的是支持控制台的浏览器(Firefox、Chrome等)

而不是

document.write("Checkbox is checked");
函数显示写入(a){
if(document.body){
var x=document.createElement(“div”)
document.body.appendChild(x)
x、 innerHTML=“”+a
}否则{
文件.书面澄清(a)
}
}
var document=新对象()
document.writeclear=document.write
document.write=函数(x){DisplayWrite(x)}

应该是
$(“正文”)。附加(“此处的文本”)改变了一些事情-将a的html设置为id,而不是仅仅附加到正文中-这有点干净way@JeromeWAGNER-否。请阅读您引用的页面中的链接:“打开文档流进行写入。如果目标中存在文档,此方法将清除该文档。”我修复了它!修正了文档。写!我删除了
,只抓取了
var x…
x.innerHTML…
的行,我发现这在我的应用程序中是可行的。(我也必须添加分号。)这正是我要找的:document.open();谢谢
document.getElementById("message").innerHTML = "Checkbox is checked";
$("#message").html("Checkbox is checked");
console.log("Checkbox is checked");
document.write("Checkbox is checked");
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)}