使用vue編寫一個點擊數字計時小游戲,列入你在文本框中輸入3,點擊開始會生成一個3行3列的表格,表格數據為1-9隨機排列,這時候從1開始點擊,按順序點到9,當按正確順序點擊完畢,會提示所用的時間,如果順序沒有按對,會提示游戲結束. 1.首先下載vue源碼,下載地址http://cn.vuejs.or ...
使用vue編寫一個點擊數字計時小游戲,列入你在文本框中輸入3,點擊開始會生成一個3行3列的表格,表格數據為1-9隨機排列,這時候從1開始點擊,按順序點到9,當按正確順序點擊完畢,會提示所用的時間,如果順序沒有按對,會提示游戲結束.
1.首先下載vue源碼,下載地址http://cn.vuejs.org
2.jquery是在面向dom操作,而vue是面向數據操作的,所以使用vue最好不要去操作dom,儘量發揮出vue的獨到之處,(如果使用過angularjs可能更容易理解)
3.建立一個普通的html文件,在頭部引用vue的源文件
1 <head> 2 <meta charset="utf-8" /> 3 <title></title> 4 <script type="text/javascript" src="js/vue.js"></script> 5 </head>
4.簡單的頁面
1)首先v-model,數據的雙向綁定,根據你文本框輸入的值變化而變化.
2)@click綁定一個click事件,其中@是v-on的縮寫.當然綁定事件可以帶參數例如@click='time(item)'.
3)v-for="(index, item) in list",迴圈數組,index為數組的角標,item為數組中的值.
可以看一下vue文檔進一步瞭解.
1 <body> 2 <div id="play"> 3 <span>輸入數字,點擊開始,會生成對應輸入數字的表格,從表格中數字1開始點擊,按順序點擊到最後....</span><br /> 4 <input type="number" v-model="num" /> 5 <button @click='arr'>開始</button> 6 <br /> 7 <div v-for="(index, item) in list"> 8 <template v-if="index % num == 0 && index!=0"><br><br><br></template> 9 <div style="float: left;"><button class="ibutton" @click='time(item)'>{{item}}</button></div> 10 </div> 11 </div> 12 </body>
5.vue操作
1)首先要new出一個Vue的實例,el綁定你的dom,這裡用id作為標識
2)data這是vue要操作的數據,num文本框的值(預設為2),list[]根據文本框值,生成的list,startTime點擊表格的開始時間,endTime點擊表格的結束時間,checkNum當前選中的數字.
3)methods中有兩個方法arr用來根據文本框的值,生成一個數組,生成一個文本框值的平方長度,且不會重覆的數組,數組的值為1-文本框值的平方,加入文本框的值為3,則生成的數組長度為9,數組的內容為1-9且不重覆.
time計算點擊的開始時間和結束時間,用check]Num來控制點擊的順序.
1 <script> 2 new Vue({ 3 el: '#play', 4 data: { 5 num: 2, 6 list: [], 7 startTime: 0, 8 endTime:0, 9 checkNum:0 10 }, 11 methods: { 12 arr: function() { 13 if(this.num > 20){ 14 alert('數值過大,瀏覽器會死掉,最好不要大於20'); 15 return; 16 } 17 this.checkNum = 0; 18 var arrlength = this.num * this.num; 19 var arr = new Array(arrlength); 20 var index = 0; 21 for(var i = 1; i <= arrlength; i++) { 22 //生成隨機數 23 var num = Math.random(); //Math.random():得到一個0到1之間的隨機數 24 num = Math.ceil(num * arrlength); //num*?的取值範圍在0~?之間,使用向上取整就可以得到一個1~?的隨機 25 if(arr[0] != 0) { 26 var flag = false; // 控制是否存在重覆元素 27 // 遍歷生產數組中的元素 28 for(var j = 0; j < arr.length; j++) { 29 if(num != arr[j]) { 30 flag = true; 31 } else { 32 flag = false; 33 break; 34 } 35 } 36 if(flag == true) { 37 arr[index++] = num; 38 } else { 39 // 發現有重覆元素重新產生新的隨機數 40 i--; 41 } 42 } else { 43 arr[index++] = num; 44 } 45 46 } 47 this.list = arr; 48 }, 49 time: function(item){ 50 if(this.checkNum+1 != item){ 51 alert('game over'); 52 this.checkNum = 0; 53 return; 54 } 55 var date = new Date(); 56 if(item == 1){ 57 this.startTime = date.getTime(); 58 } 59 if(item == this.num * this.num){ 60 this.endTime = date.getTime(); 61 var useTime = ((this.endTime - this.startTime)/1000).toFixed(2); 62 alert('使用了'+useTime+'秒'); 63 this.checkNum = 0; 64 return; 65 } 66 this.checkNum = item; 67 } 68 } 69 }) 70 </script>
6.css代碼
1 <style> 2 .ibutton{ 3 margin-top: 10px; 4 margin-left: 10px; 5 color: #fff; 6 border: 1px solid #8a6de9; 7 background-color: #8a6de9; 8 font-size: 14px; 9 padding: 6px 12px; 10 border-radius: 7px; 11 width: 50px; 12 height: 40px; 13 } 14 </style>
7.在某些特定的場景使用vue來完成一個功能要比jquery簡單的多,但是jquery還是很強大的,根據不同的場景運用不同的技術,更快更好的完成自己想要的功能.