问答详情
源自:8-17 编程练习

为什么把HTML DOM部分放在JS代码下面就不执行了,放在上面可以执行,是什么原因?顺序没搞懂

<h3>操作成功</h3>
<div><strong id="second">5</strong>秒后返回  </div>

<input type="button" value="返回" onClick="test()">
<script>
var sec=document.getElementById("second");
var i=5;
var timer=setInterval(function(){
i--;	
sec.innerHTML=i;	
if(i==1){
window.location.href="https://www.imooc.com";		
}},1000);

function test(){
history.forward();
}	

</script>


提问者:bestMan 2019-08-08 16:04

个回答

  • 阳火锅
    2019-08-09 09:09:52
    已采纳

    网页加载是从上至下

  • 狼王梦0_0
    2019-08-18 21:34:03

    一楼正解,这是学习js必定会碰见的坑,网页加载自上而下,遇见js就先将其编码了,可是如果你操作了DOM,这是的页面其实还没有出现,js就获取不到DOM节点,所以无效,这里一般js放在网页最下面,还有两种解决方案。

    1、在js开头加上

    window.onload = function(){你的内容}

    2、jQuery写法

    $(你的内容)//这个你得学习jQuery

    3、在<script>标签中加上

    defer(这IE支持,太坑不建议使用;其实我记得有个别的现在一时想不起来【请人指点】)