刚开始学习JS,遇到一个小问题求解

HTML代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Blog</title>
    <script type="text/javascript" src="scripts/abc.js"></script>
</head>
<body>
    <div id="box">id</div>
</body>
</html>

JS代码:
alert(document.getElementById("box").innerHTML);

为什么以上代码执行不了,用火狐浏览器运行时候没有弹出窗口,求解?

阅读 2.8k
5 个回答

亲,你的js文件应该放到下面去,加载顺序不对

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Blog</title>
</head>
<body>
    <div id="box">id</div>
     <script type="text/javascript" src="scripts/abc.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Blog</title>
    <script type="text/javascript" src="scripts/abc.js"></script>
</head>
<body>
    <div id="box">id</div>
</body>
<script>
    alert(document.getElementById("box").innerHTML);
</script>
</html>

因为你的代码没有写全, 我猜你是把加载顺序写反了

执行时机
window.load 看看这个

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Blog</title>
    <script type="text/javascript" src="scripts/abc.js"></script>
</head>
<body>
    <div id="box">id</div>
    <script>
        alert(document.getElementById("box").innerHTML);
    </script>
</body>
</html>

亲测这样的代码在firefox能够弹出窗口。有可能是你firefox禁止弹出alert框。
转用console.log(document.getElementById("box").innerHTML) f12查看控制台输出。

是的,如上一位兄台所说你的js是在body代码之前src进来的,那时候还没有dom,所以获取不到id=box这个节点。这样就会报错,学js的一定要会的一件事就是打开浏览器控制台查看有没有报错。

clipboard.png

难道是你把alert写在abc.js里了?如果这样的话,alert执行的时候是获取不到id="box"的元素的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Blog</title>
    <script type="text/javascript">
    function test(){
        alert(document.getElementById("box").innerHTML);
    };
    window.onload=test;
    </script>
</head>
<body>
    <div id="box">id</div>
</body>
</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题