为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

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

1 回复 有任何疑惑可以回复我~

你要知道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了

0 回复 有任何疑惑可以回复我~

能说具体点吗?

0 回复 有任何疑惑可以回复我~
#1

KevinLL 提问者

我通俗点说 title=document.getElementById('title'), play=document.getElementById('play'), stop=document.getElementById('stop'); 这三行放在window.onload=function () {} 就能运行; 定义全局变量就不能运行; 是什么原因
2016-07-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信