寫給兔小白的js教程(3)

昨天兔小白太忙了,沒有完成家庭做業,不要緊,今天講的東西比較簡單,給兔子一個緩衝的時間。javascript

今天繼續講語句,來看看用得第二多的循環語句吧。html


一、for循環語句java

for循環語句能夠將某段代碼反覆執行必定的次數,咱們直接用例子講語法。好比咱們要在頁面上連續跳10次提示框,能夠這麼寫:數組

  
  
  
  
  1. for(var i = 0;i < 10;++i){ 
  2.     window.alert("ALARM"); 

固然啦,只有搗亂的程序纔會這麼不停的彈提示框,我們無論它,來看語法。for語句由三段組成,第一段是初始化用的,這裏咱們定義了一個變量i,賦了初值0。第二段是判斷條件,表示條件知足時纔會繼續循環,這裏寫的是i<10,表示只要變量i的值小於10,就一直循環。第三段是增量語句,這裏每循環一次就自增i的值,因此循環10次之後,i=10,就再也不知足循環條件了,因此循環就退出了。app

for語句還能有一些變化:dom

  
  
  
  
  1. //用多個變量也能夠喲 
  2. for(var i = 0,j = 0;i +j < 10;++i,++j){ 
  3.     //do something 
  4.  
  5. //用自減也能夠喲 
  6. for(var i = 100;i > 0;--i){ 
  7.     //do something 
  8.  
  9. //判斷條件不只限於循環變量喲,能夠與外部變量結合使用 
  10. for(var i = 0;i < 10 && !userCancel;++i){ 
  11.     //do something 
  12.  
  13. //什麼都不寫,會死循環的,這種狀況要在內部按某種條件強行退出循環 
  14. for(;;){ 
  15.     //do something 

與循環語句常常一塊兒出現的還有兩個關鍵字:break和continue,前者用於強行退出循環,後者用於忽略本次循環後面的語句,直接進入下一次循環。看個例子:ide

  
  
  
  
  1. var rnd = 0; 
  2. for(;;){ 
  3.     //生成一個100之內的隨機數,看着眼熟不?嘿嘿 
  4.     rnd = Math.floor(Math.random() * 100); 
  5.  
  6.     //若是這個隨機數大於60,就退出循環 
  7.     if(rnd > 60) 
  8.         break

二、for...in循環語句ui

for...in語句能夠認爲是for循環針對數組與對象的一個簡化的特殊用法,它常常用於遍歷數組元素。下面兩種寫法是等價的,兔體會一下:spa

  
  
  
  
  1. var numbers = [1, 2, 3]; 
  2. for(var i in numbers){ 
  3.     alert(numbers[i]); 
  
  
  
  
  1. var numbers = [1, 2, 3]; 
  2. for(var i = 0;i < numbers.length;++i){ 
  3.     alert(numbers[i]); 

三、while循環語句htm

while循環也用於將一段代碼反覆執行,直到條件不知足時爲止。它和for能夠互相轉化,好比上面那個彈出10次提示框的for循環,用while改寫一下:

  
  
  
  
  1. var i = 0; 
  2. while(++i < 10){ 
  3.     window.alert("ALARM"); 

while只有一個判斷條件,只要條件知足,就一直循環,因此與for相比,它常常用於沒法事先判斷循環次數的場景。用while的時候要當心,若是處理很差,它可能會形成死循環喲。

四、do...while循環

while循環有個缺點,就是若是條件不知足,它就一次循環都不執行,但是有時候咱們但願咱們的代碼至少執行一次,這時候do...while就派上用場了。看個例子,好比咱們要讓用戶輸入一個數字,若是輸入不合法,就從新輸入,直到合法爲止,用do...while會比用while舒服不少:

  
  
  
  
  1. var num; 
  2. do
  3.     //prompt()方法會彈一個輸入框讓用戶輸入 
  4.     num = window.prompt("請輸入一個數字"); 
  5. while(isNaN(num)); 


好了,遊戲時間到了,咱們把今天的知識點組合一下,讓兔小灰來猜水果。規則是這樣的,兔小白輸入想吃的水果的名字(英文),不等兔小白輸完,兔小灰就要猜出是什麼。


上代碼啦,這回不算長吧?

  
  
  
  
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
  2. <html> 
  3. <title>兔小灰猜水果</title> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <style> 
  6. *{font-size:20px;font-family:"微軟雅黑"
  7. #fruits{display:inline-block;} 
  8. </style> 
  9. <script type="text/javascript" language="javascript"
  10.  
  11. //定義一個全局的字符串數組,用來存兔小灰知道的全部水果(真少啊) 
  12. var fruitArray = ["apple""banana""cherry""grape""mango""orange""peach""pineapple""strawberry""watermelon"]; 
  13.  
  14. /* 
  15.  * 這個方法和上課課的同樣喲,偷懶用的 
  16.  */ 
  17. function get(id){ 
  18.     return document.getElementById(id); 
  19.  
  20. /* 
  21.  * 兔小灰來猜想兔小白想吃什麼 
  22.  */ 
  23. function grayGuess(){ 
  24.  
  25.     //取得兔小白的輸入,爲了防止兔小白用大寫字母致使後面比對出問題,一概用toLowerCase()方法轉成小寫 
  26.     //fruits是一個空數組,兔能夠把它想象成一個空籃子,一下子咱們要往裏放過濾出來的水果圖片 
  27.     var input = get("whiteWant").value.toLowerCase(), 
  28.         fruits = []; 
  29.  
  30.     //這裏用到了今天學的for...in循環了 
  31.     //咱們遍歷fruitArray中的每個元素 
  32.     for(var i in fruitArray){ 
  33.  
  34.         //[i]用於從數組中取第i個元素 
  35.         //咱們看這個元素是否包含兔小白的輸入,indexOf()是字符串對象的一個方法,返回子串出現的位置,若是找不到,會返回-1 
  36.         //因此判斷其返回值>=0,就代表找到了 
  37.         if(fruitArray[i].indexOf(input) >= 0){ 
  38.  
  39.             //push()方法用於往數組裏壓入一個元素,這裏咱們壓入一段html代碼,兔應該能看懂,就是一個<img>標籤 
  40.             fruits.push("<img src='p_w_picpaths/" + fruitArray[i] + ".jpg' />"); 
  41.  
  42.         } 
  43.     } 
  44.  
  45.     //join()是數組的方法,用於把數組中的每一個元素鏈接成一個字符串 
  46.     //咱們再把這個字符串賦給div的innerHTML屬性,就至關於把那一堆<img>加到頁面上了 
  47.     get("fruits").innerHTML = fruits.join(""); 
  48.  
  49. </script> 
  50. <body> 
  51. 兔小灰我想吃 
  52. <input type="text" id="whiteWant" onkeyup="grayGuess()" /> 
  53. <img src="p_w_picpaths/white.gif" id="white" /> 
  54. <br/><br/> 
  55. <img src="p_w_picpaths/gray.gif" id="gray" /> 
  56. 兔小白是否是想吃…… 
  57. <div id="fruits"></div> 
  58. </body> 
  59. </html> 


兔小白認真閱讀了沒?下面是家庭做業了:
 

一、基礎題:若是沒找到合適的水果,能不能讓兔小灰說:「這是什麼水果啊?北門的水果攤有沒?」
二、進階題:如今每次兔小灰會列出一大堆可能的水果,能不能讓他只列最有可能的一個?

相關文章
相關標籤/搜索