为什么5秒没有变成4,3,2,1……?
你的错误在于你的js位置写错了,你在js里获取id为timer这个元素的时候,浏览器并没有解析到html的位置,所以它没获取到timer,你把js放在html后面就可以了,如下:
<!DOCTYPE html>
<html>
<head>
    <title>浏览器对象</title>
    <meta charset="utf-8"/>
    <meta http-equiv="Content-Type" content="text/html; charset=gkb"/>
</head>
<body>
<!--先编写好网页布局-->
<h1>操作成功</h1>
<span id="timer">5</span>
<span>秒后回到主页</span>
<a href="javascript:back();">返回</a>
</body>
<script type="text/javascript">
    //获取显示秒数的元素,通过定时器来更改秒数。
    var num=document.getElementById("timer").innerHTML;
    function count(){
        num--;
        document.getElementById("timer").innerHTML=num;
        if(num==0){
            window.location.assign("http://www.imooc.com");
        }
    }
    setInterval("count()",1000);
    //通过window的location和history对象来控制网页的跳转。
    function back(){
        window.history.go(-1);
    }
</script>
</html>
这个跟你的代码没什么关系,你拿到自己的编辑器上打开就可以正常运行了,2楼的说法不敢苟同,变量的位置决定的是它的作用域,在这里把timer当做全局变量是可以的,它不影响程序的正常运行
把 var num=document.getElementById("timer").innerHTML;这行代码放到function(){}里面
要执行这个方法,把变量定义在方法内
把setInterval("count()",1000);放在函数内,跟在if语句的后面,应该就可以了