m0_46602893 2021-04-14 21:53 采纳率: 91.5%
浏览 90
已结题

js问题,script和body的执行顺序问题?

<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
            #box{border: 1px solid black;width:300px; height: 300px;}
      </style>
      <script>
            alert(document.getElementById("box").innerHTML);
      </script>
</head>
<body>
      <div id="box">123456</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
            #box{
                  width: 300px;
                  height: 300px;
                  background: blueviolet;
                  color: black;
            }
      </style>
      <script>
                  function btn(){
                        var arr = [/靠/ig, /cnm/ig, /tmd/ig];
                        var stext = document.getElementById("text");
                        var sbox = document.getElementById("box");
                        var scc = stext.value;
                        for(i = 0; i < arr.length; i++){
                                  scc  = scc.replace(arr[i], "*");
                        }
                        console.log("sbox",sbox);
                        sbox.innerHTML = scc;
                        stext.value = "";
                  }
      </script>
</head>
<body>
      <textarea name="" id="text" cols="30" rows="10"></textarea>
      <button onclick="btn()">点击刷新</button>
      <div id="box"></div>
</body>
</html>

问题:上下两端代码都是js加css内容,代码同样是由上至下执行,为什么第一段代码console不出来,而第二段代码可以?

执行顺序应该都一样啊

  • 写回答

2条回答 默认 最新

  • hfhan_872914334 2021-04-15 12:56
    关注

    可以看下html的解析过程,head中的js执行的时候,body中的元素还没有加入dom树,所以找不到box,继而抛出错误

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月4日
  • 已采纳回答 8月27日