为何只有一句可以执行?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script>
        window.onload = function(){
        var mybox = document.getElementsByTagName("li");
        document.write('<xmp>'+mybox[0].innerHTML+'</xmp>');
        alert(mybox[0].innerHTML);
        console.log(mybox[0].innerHTML);
        }
    </script>
</head>
<body>
    <ul id="box">
        <li><img src="image/i1.png" alt=""></li>
        <li><img src="image/i2.png" alt=""></li>
        <li><img src="image/i3.png" alt=""></li>
    </ul>    
</body>
</html>

我发现

        window.onload = function(){
        var mybox = document.getElementsByTagName("li");
        document.write('<xmp>'+mybox[0].innerHTML+'</xmp>');
        alert(mybox[0].innerHTML);
        console.log(mybox[0].innerHTML);
        }
        

里面的三句话:

        document.write('<xmp>'+mybox[0].innerHTML+'</xmp>');
        alert(mybox[0].innerHTML);
        console.log(mybox[0].innerHTML);
        

只有一句可以执行

document.write('<xmp>'+mybox[0].innerHTML+'</xmp>');

为何执行完 document.write('<xmp>'+mybox[0].innerHTML+'</xmp>');
后面的两句不执行了?

        alert(mybox[0].innerHTML);
        console.log(mybox[0].innerHTML);

阅读 2.3k
4 个回答

你在window.onload里执行document.write,会导致整个页面被覆盖,所有的DOM元素都不存在了,所以下面的 mybox[0]根本就找不到了,报异常退出了。

document.write后并没有mybox了

注意: 因为 document.write 写入文档流,在关闭(已加载)的文档上调用 document.write 会自动调用 document.open,这将清除该文档。

window.onload = function(){
var mybox = document.getElementsByTagName("li");
document.write('<xmp>'+mybox[0].innerHTML+'</xmp>');
alert(mybox[0].innerHTML);
console.log(mybox[0].innerHTML);
}

改写成

    window.onload = function(){
    var mybox = document.getElementsByTagName("li");
    alert(mybox[0].innerHTML);
    console.log(mybox[0].innerHTML);
    document.write('<xmp>'+mybox[0].innerHTML+'</xmp>');
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题