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

局部变量的问题,stopFun和playFun里面都没有定义play。但为什么可以正常运行。而stop未定义的话就实现不了。

var data=['Phone5','Ipad','三星笔记本','佳能相机','惠普打印机','谢谢参与','50元充值卡','1000元超市购物券'],
    timer=null,
    flag=0;

window.onload=function(){
    var play=document.getElementById('play'),
        stop=document.getElementById('stop'),
        title=document.getElementById('title');
    // 开始抽奖
    play.onclick=playFun;
    stop.onclick=stopFun;

   // 键盘事件
    document.onkeyup=function(event){
        evevt=event||window.event;
        if(event.keyCode==13){
            if(flag==0){
                playFun();
                flag=1;
            }else{
                stopFun();
                flag=0;
            }
        }
    }
}

function playFun(){
    var stop=document.getElementById('stop');//定义stop,未定义play    clearInterval(timer);
    timer=setInterval(function(){
        var random=Math.floor(Math.random()*data.length)
        title.innerHTML=data[random];
    },50)
    play.style.background="#999";
    stop.style.background="#036";
    flag=1;
}

function stopFun(){
    var stop=document.getElementById('stop');//定义stop,未定义play
    clearInterval(timer);
    play.style.background="#036";
    stop.style.background="#999";
    flag=0;
}

正在回答

3 回答

//js可以通过元素ID直接访问元素,也可以通过document.getElementById('play')的方式访问。
//第一种方式不推荐,不是标准里面的,将来不一定支持。
//至于这里stop为什么获取不到,是因为js默认已经定义了一个stop()函数;
//你可以做以下尝试:
//1.删除id=stop的span,直接在window.onload中alert(stop),会看到stop是一个function,
//输出的内容是:function stop(){[native code]}
//
window.onload=function(){
        alert(stop);
};
//
//2.修改span的id为stop外的其他值,比如gstop,效果就跟play一样都能获取到。


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

play已经在window.onload下面声明了  属于全局变量  在任何地方都可以获取到

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

tlojy

你这理解有问题,playFun是定义在window.onload外面的,跟window.onload是同级的,是无法访问window.onload里的变量的。
2016-10-11 回复 有任何疑惑可以回复我~

在函数外面变量加var表示全局变量,函数外面和里面都可以调用。而在函数里面的变量加var则表示局部变量,函数外部无法调用。

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

harry2013 提问者

不是这个问题,问题是play在stopFun和playFun函数里面都未声明,为什么可以获取到play。
2016-08-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

局部变量的问题,stopFun和playFun里面都没有定义play。但为什么可以正常运行。而stop未定义的话就实现不了。

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