为什么定义了全局变量title.play,stop在onload的匿名函数里不能用呢

来源:4-5 [DOM事件] 抽奖系统(下)

KevinLL

2016-07-29 22:58

var data=['Phone5','Ipad','三星笔记本','佳能相机','惠普打印机','谢谢参与','50元充值卡','1000元超市购物券'],
    timer=null,
    flag=0,
    title=document.getElementById('title'),
    play=document.getElementById('play'),
    stop=document.getElementById('stop');
window.onload=function () {
    // vartitle=document.getElementById('title'),
    // play=document.getElementById('play'),
    // stop=document.getElementById('stop');
    //鼠标点击开始抽奖
    play.onclick=playFun;
    stop.onclick=stopFun;
    //回车键开始抽奖
    document.onkeyup=function(event){
        event=event||window.event;
        if (event.keyCode==13) {
            if (flag==0) { playFun();} 
            else { stopFun(); }
        }
    }
    function playFun() {
        //setInterval计时器,每50毫秒执行一次函数
        clearInterval(timer);  //停止计时器
        timer=setInterval(function(){
            var random=Math.random(),  //0-1随机数
            num=Math.floor(random*data.length);  //给范围向下取整
            title.innerHTML=data[num];  //给标题赋值
        },50);
        play.style.backgroundColor="#eee";
        play.style.color="#aaa";
        play.style.cursor="default";
        stop.style.backgroundColor="#19448e";
        stop.style.color="#fff";
        stop.style.cursor="pointer";
        flag=1;
    }
    function stopFun() {
        clearInterval(timer);
        play.style.backgroundColor="#19448e";
        play.style.color="#fff";
        play.style.cursor="pointer";
        stop.style.backgroundColor="#eee";
        stop.style.color="#aaa";
        stop.style.cursor="default";
        flag=0;
    }
}


写回答 关注

3回答

  • harry2013
    2016-08-06 21:35:44

    通俗说就是window.onload就是页面加载后里面的函数都开始启用了。全局变量慢了一步了。onload里面的函数要用变量的时候却找不到。

  • 慕仰6432972
    2016-07-29 23:58:42

    你要知道window.onload是做什么用的


    当页面加载的时候可以调用某些函数
    例如定义一个function act1(){
    }
    window.onload = act1;
    在页面加载的时候就可以调用函数act1了
    还可以 window.onload = =function() { a();  b(); }
    来调用多个方法


    也就是说window.onload是页面加载后调用函数用的,你的getElementById是用来获取元素的,你获取元素一般都是一个数组或者具体某个元素,要么封装在变量里,你把它放在onload后面算是什么意思呢?他又不是函数

    除非你这样写倒是可以

    例如  function Id1(){

    var id1=document.getElementById('SDLJF')

      id1.onclick=fnDown

    //SDLJF是我随便定义的一个ID名

    }

    window.onload=Id1  这时候也就可以当成跟了一个getElementById了

  • 慕仰6432972
    2016-07-29 23:51:42

    能说具体点吗?

    KevinL...

    我通俗点说 title=document.getElementById('title'), play=document.getElementById('play'), stop=document.getElementById('stop'); 这三行放在window.onload=function () {} 就能运行; 定义全局变量就不能运行; 是什么原因

    2016-07-30 09:47:35

    共 1 条回复 >

DOM事件探秘

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

99545 学习 · 1197 问题

查看课程

相似问题