局部變量的問題,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;
}
2016-10-11
//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一樣都能獲取到。2016-08-07
play已經在window.onload下面聲明了 ?屬于全局變量 ?在任何地方都可以獲取到
2016-08-07
在函數外面變量加var表示全局變量,函數外面和里面都可以調用。而在函數里面的變量加var則表示局部變量,函數外部無法調用。