亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

其實這里面還是有個小BUG的。 我們在觸發onclick事件時,會執行playFun函數。 但是,如果我們想用鍵盤事件來關閉的話會出現問題。 這樣用戶體驗并不好。

正在回答

4 回答

這個問題很好解決,就把flag的值,在playFun和stopFun里面在在重生一下,就行了。


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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>無標題文檔</title>

<style>

*{margin:0; padding:0;}

#title{

  width:400px; 

  height:60px; 

  margin:0 auto; 

  padding-top:30px;

  font-size:24px;

  font-weight:blod;

  line-height:60px;

  text-align:center;

  color:#f00;

 }

#btns{

 width:204px;

 height:30px;

 margin:0 auto;

}

#btns span{

      width:80px;

  height:28px;

  display:block;

  background:#036;

  float:left;

  margin-right:20px;                  /*注意border的寬度和margin的大小*/

  border:1px solid #036;

  border-radius:7px;

  line-height:28px;

  text-align:center;

  color:#fff;

  font-weight:blod;

  font-family:"microsoft yahei";

  font-size:20px;

  cursor:pointer;

     }

</style>

<script>

window.onload = function ()

{

var oTitle = document.getElementById('title');

var oPlay = document.getElementById('play');

var oStop = document.getElementById('stop');

var array = ['iphone6','iWatch','MX4','Canon','iMac','100元充值卡','200元超市購物卡','謝謝參與','蘋果筆記本','智能手環'];

var timer = null;

var flag = 0;              //設置一個標志變量

//鼠標點擊事件

oPlay.onclick = startMove;            //為什么此處加()不行

oStop.onclick = stopMove;

//鍵盤事件

document.onkeyup = function (e)

{

var oEvent = e || event;

if(oEvent.keyCode == 13)

{

if(flag == 0)

{

startMove();            //為什么此處非要加()

flag = 1;

}

else

{

stopMove();

flag = 0;

}

}

}

function startMove()

{

if(flag == 0)

{

clearInterval(timer);

timer = setInterval(function (){

var rand = Math.floor(Math.random()*array.length);

oTitle.innerHTML = array[rand];

}, 50);

oPlay.style.background = '#999';

}

flag = 1;

}

function stopMove()

{

if(flag == 1)

{

clearInterval(timer);

   oPlay.style.background = '#036';

}

flag = 0

}

}

</script>

</head> 


<body>

<div id="title">

    開始抽獎啦!

</div>   

<div id="btns">

    <span id="play">開始</span>

    <span id="stop">停止</span>

</div>

</body>

</html>


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

B10041104

oPlay.onclick = startMove; 這是相當于傳遞引用啊, startMove后面加括號才是真正的調用函數。
2014-10-04 回復 有任何疑惑可以回復我~

flag的改變應該在funplay和funStop里

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

確實,如果用鼠標開始,但是想用鍵盤結束的話得按兩次enter才可以。

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

舉報

0/150
提交
取消
DOM事件探秘
  • 參與學習       99534    人
  • 解答問題       1305    個

DOM事件?本課程會通過實例來給小伙伴們講解如何使用這些事件

進入課程
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號