document.write() 有什么错误吗?
Is there any bug with document.write()?
我的代码是这样的:
window.onload = function() {
var x = document.createElement("INPUT");
x.setAttribute("type", "text");
x.setAttribute("value", "");
document.body.appendChild(x);
}
我想再写点东西,我加了一行。
像这样:
window.onload = function() {
var x = document.createElement("INPUT");
x.setAttribute("type", "text");
x.setAttribute("value", "");
document.body.appendChild(x);
document.write("<br>");
}
然后,我的输入标签突然消失了。
所以,我写了'AAA'来检查是否添加了<br>
代码。
像这样:
window.onload = function() {
var x = document.createElement("INPUT");
x.setAttribute("type", "text");
x.setAttribute("value", "");
document.body.appendChild(x);
document.write("<br>");
document.write("AAA")
}
换行了,AAA。
因此,我认为 document.write()
.
存在错误或其他问题
有没有bug?
还是我写错了?
我的目的是添加一个新行。
我想使我的代码 运行 正确。
有什么办法可以解决这个问题吗?
问题是,如果页面已经加载,document.write
将替换 整个 页面HTML 字符串。如果您删除了 window.onload
处理程序,并在浏览器到达 <script>
标记时立即拥有该片段 运行,则 <input>
和 <br>
都将是按预期插入文档:
<script language="javascript">
var x = document.createElement("INPUT");
x.setAttribute("type", "text");
x.setAttribute("value", "");
document.body.appendChild(x);
document.write("<br>");
</script>
一般来说,解决方案是不使用document.write
- 它的行为可能会令人困惑,并且它提供的任何东西都可以通过方法轻松完成例如appendChild
和insertAdjacentHTML
,例如:
document.body.appendChild(document.createElement('br'));
或
document.body.insertAdjacentHTML('beforeend', '<br>');
我的代码是这样的:
window.onload = function() {
var x = document.createElement("INPUT");
x.setAttribute("type", "text");
x.setAttribute("value", "");
document.body.appendChild(x);
}
我想再写点东西,我加了一行。
像这样:
window.onload = function() {
var x = document.createElement("INPUT");
x.setAttribute("type", "text");
x.setAttribute("value", "");
document.body.appendChild(x);
document.write("<br>");
}
然后,我的输入标签突然消失了。
所以,我写了'AAA'来检查是否添加了<br>
代码。
像这样:
window.onload = function() {
var x = document.createElement("INPUT");
x.setAttribute("type", "text");
x.setAttribute("value", "");
document.body.appendChild(x);
document.write("<br>");
document.write("AAA")
}
换行了,AAA。
因此,我认为 document.write()
.
有没有bug?
还是我写错了?
我的目的是添加一个新行。
我想使我的代码 运行 正确。
有什么办法可以解决这个问题吗?
问题是,如果页面已经加载,document.write
将替换 整个 页面HTML 字符串。如果您删除了 window.onload
处理程序,并在浏览器到达 <script>
标记时立即拥有该片段 运行,则 <input>
和 <br>
都将是按预期插入文档:
<script language="javascript">
var x = document.createElement("INPUT");
x.setAttribute("type", "text");
x.setAttribute("value", "");
document.body.appendChild(x);
document.write("<br>");
</script>
一般来说,解决方案是不使用document.write
- 它的行为可能会令人困惑,并且它提供的任何东西都可以通过方法轻松完成例如appendChild
和insertAdjacentHTML
,例如:
document.body.appendChild(document.createElement('br'));
或
document.body.insertAdjacentHTML('beforeend', '<br>');