Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么document.write未按预期完成_Javascript_Jquery - Fatal编程技术网

Javascript 为什么document.write未按预期完成

Javascript 为什么document.write未按预期完成,javascript,jquery,Javascript,Jquery,只是尝试设置一个小测试页面,甚至它的行为也不符合预期 鉴于以下工作代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"> <title>Terry's Test Page</title> <script src='jquery-1.

只是尝试设置一个小测试页面,甚至它的行为也不符合预期

鉴于以下工作代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">
<title>Terry's Test Page</title>
<script src='jquery-1.7.1.min.js'></script>
</head>
<body>
    <p>from the html in index.html</p>
</body>
</html>
我得到了我所期望的,html中的一行和tab标签中Terry的测试页面。但是,如果我在行前添加:

我正确地得到了“fromthejs”行-不是来自html,因为document.write替换了它-但是标签标签上没有填充Terry的测试页面。在IE中,标签显示url,在Firefox中,标签显示“连接…”,但它永远不会超出这个范围

写我不懂的东西是什么?我必须发出某种文件结尾或类似的命令吗?

因为在页面加载后调用,它会调用,从而清空整个文档。浏览器将尽其所能使用您提供的内容创建一个完整的新文档。文档不仅是正文中的内容,也是其他所有内容

在您的情况下,您的文档是来自js的,但是由于这不是一个有效的HTML文档,缺少HTML、head和body,浏览器将添加必要的内容

比如说

document.write('<head><title>foo</title></head>');
这只会创建一个空的正文,但会将页面标题设置为foo。

因为在页面加载后调用,它会调用,从而清空整个文档。浏览器将尽其所能使用您提供的内容创建一个完整的新文档。文档不仅是正文中的内容,也是其他所有内容

在您的情况下,您的文档是来自js的,但是由于这不是一个有效的HTML文档,缺少HTML、head和body,浏览器将添加必要的内容

比如说

document.write('<head><title>foo</title></head>');

这只会创建一个空正文,但会将页面标题设置为foo。

document.write不再广泛使用,尤其是jQuery。您应该使用append或insert。这就是说,它确实有效,但不推荐使用:

document.write不再广泛使用,尤其是在jQuery中。您应该使用append或insert。也就是说,它确实有效,但不推荐使用:

虽然必须小心使用document.write,但这并不能真正回答问题。虽然必须小心使用document.write,但这并不能真正回答问题。如果document.write调用直接嵌入HTML代码中,然后它就不会调用document.open了。@j08691:是的,我澄清了我的答案。@Felix Kling就在这里,因为你把document.write放在身体之前的头上,你实际上是在替换身体。如果希望标记显示在文档正文中,则需要在文档正文中使用它。@davidethell:在这种情况下,脚本位于何处并不重要。document.write在jQuery的ready处理程序中,所以在加载页面后调用它。啊,就像他们说的那样,生活和学习。我在js中使用了$'。'body'的附件;一切都很好。非常感谢。如果document.write调用直接嵌入到HTML代码中,那么它将不会调用document.open。@j08691:是的,我澄清了我的答案。@Felix Kling就在这里,因为您将document.write放在主体之前的头部,实际上就是替换主体。如果希望标记显示在文档正文中,则需要在文档正文中使用它。@davidethell:在这种情况下,脚本位于何处并不重要。document.write在jQuery的ready处理程序中,所以在加载页面后调用它。啊,就像他们说的那样,生活和学习。我在js中使用了$'。'body'的附件;一切都很好。非常感谢。