代碼疑問(全局變量和局部變量)
var?data=['Phone5','Ipad','三星筆記本','佳能相機','惠普打印機','謝謝參與','50元充值卡','1000元超市購物券'],
????timer=null,
????flag=0;
window.onload=function(){
????var?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();
???????????flag=1;
?????????}else{
???????????stopFun();
???????????flag=0;
?????????}
??????}
???}
}
function?playFun(){
var?title=document.getElementById('title');
var?play=document.getElementById('play');
clearInterval(timer);
timer=setInterval(function(){
???var?random=Math.floor(Math.random()*data.length);
???title.innerHTML=data[random];
},50);
????play.style.background='#999';
}
function?stopFun(){
clearInterval(timer);
var?play=document.getElementById('play');
play.style.background='#036';
}老師的源碼中,第六行和第七行聲明了兩個變量,請問是全局變量嗎?
如果是,為什么還要在playFun和stopFun這兩個函數中進行獲?。?/p>
我自己試了一下,把29行從函數內取出放在第8行,并把30、41行刪掉,在瀏覽器中依舊可以使用,效果一樣。
2016-02-03
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){ event?=?event?||?window.event; if?(event.keyCode==13)?{ if?(flag==0)?{ playFun(); flag=1; }else{ stopFun(); flag=0; }; }; } } function?playFun(){ clearInterval(timer); timer=setInterval(function(){ var?random=Math.floor(Math.random()*data.length); //console.log(random);在控制臺顯示 title.innerHTML=data[random]; },50); play.style.background='gray'; flag=1; } function?stopFun(){ clearInterval(timer); play.style.background='red'; flag=0; }這是我寫的,效果一樣,stopFun和playFun兩個函數同樣也是寫在了onload外面,并且沒有重新再獲取按鈕,為什么一樣可以調用onload里面的變量。
老師在視頻里說的在onload外面是需要重新獲取的,還是我理解錯了,請大神們解答。