document.write在由appendChild添加的Javascript文件中变为无效

时间:2013-08-16 06:16:46

标签: javascript appendchild document.write createelement

当我在index.html 的body标签中直接添加脚本标记时,如下所示:

<script type="text/javascript" src='**doc_write_in_it.js**'></script>

效果很好,在那里输出“测试文档写入”。

但如果我以另一种方式写 ,如下所示:

<script type="text/javascript">
    var model = document.createElement('script');
    model.setAttribute('type','text/javascript');
    model.setAttribute('src','doc_write_in_it.js');
    var bd = document.getElementsByTagName('body')[0];
    bd.appendChild(model);
</script>   

document.write在由appendChild添加的Javascript文件中变为无效。

doc_write_in_it.js 中的提示会显示,但document.write中的文字不显示。

doc_write_in_it.js 文件是这样的:

alert('activited');
document.write('test doc write");

希望有人能帮忙...... 非常感谢...

3 个答案:

答案 0 :(得分:1)

如上所述,当页面已加载时,document.write不起作用。 我建议你尽可能使用innerHTML属性。

示例:

var bd = document.getElementsByTagName('body')[0];
bd.innerHTML = "some text";

答案 1 :(得分:0)

document.write将覆盖之前的任何其他内容。所以,如果你完全确定它是你想要做的。然后你应该等待页面加载,然后激活document.write。在下面的行上的东西..

<script>
function my_onload_fn() {
    document.write("test document write");
}
</script>

<body onload="my_onload_fn();">

答案 2 :(得分:0)

实际上,document.write不会影响何时加载页面,但您可以调用document.open()使其可用。

将脚本代码放在script标记中是同步的,而通过DOM操作加载脚本文件是异步的,因此,如果页面很简单,可能在document.write(..)运行时加载页面并生成{{如果未调用document.write(...),则不执行任何操作。

document.open()

这会奏效。 并查看此link了解详情。