2013-03-18 21 views
0

我有以下兩個函數,我試圖讓用戶輸入一年,然後答案會導致答案。但是,如何讓函數識別一個字符串,然後如果答案不是MM/DD/YYYY形式,運行函數wholePigLatin?基本上,我該如何附加同一個按鈕來運行這兩個函數,具體取決於用戶放入。任何幫助將不勝感激。謝謝。從if語句運行另一個函數

function isLeaper() { 
      var image1 = document.getElementById('yes'); 
      var image2 = document.getElementById('no'); 
      var year = document.getElementById("isLeaper").value; 
      var arr = year.split('/'); 
      var splitYear = arr[arr.length - 1]; 
      // 1. If the year is divisible by 4, but not 100. 
      if ((parseInt(splitYear) % 4) == 0) { 
       if (parseInt(splitYear) % 100 == 0) { 
        if (parseInt(splitYear) % 400 != 0) { 
         $('#myDiv').html(image2).fadeIn(500).delay(1000).fadeOut(500); 
         // alert(year + 'is not a leap year. Sorry!'); 
         return "false"; 
        } 
        if (parseInt(splitYear) % 400 == 0) { 
         $('#myDiv').html(image1).fadeIn(500).delay(1000).fadeOut(500); 

         //alert(splitYear + ' is a leap year. Hooray! '); 
         return "true"; 
        } 
       } 
       if (parseInt(splitYear) % 100 != 0) { 
        $('#myDiv').html(image1).fadeIn(500).delay(1000).fadeOut(500); 

        //alert(splitYear + ' is a leap year. Hooray! '); 
        return "true"; 
       } 
      } 
      if ((parseInt(splitYear) % 4) != 0) { 
       $('#myDiv').html(image2).fadeIn(500).delay(1000).fadeOut(500); 

       //alert(splitYear + ' is not a leap year. Sorry! '); 
       return "false"; 
      } 
     } 

     if ((parseInt(year) % 4) != 0) { 
      $('#myDiv').html(image2).fadeIn(500).delay(1000).fadeOut(500); 
      return "false"; 
     } 

我的第二個功能如下:

function wholePigLatin() { 
      var thingWeCase = document.getElementById("pigLatin").value; 
      thingWeCase = thingWeCase.toLowerCase(); 
      var newWord = (thingWeCase.charAt(0)); 

      if (newWord.search(/[aeiou]/) > -1) { 
       alert(thingWeCase + 'way') 
      } 
      else { 
       var newWord2 = thingWeCase.substring(1, thingWeCase.length) + newWord + 'ay'; 
       alert(newWord2) 
      } 
     } 

這裏是我的按鈕。

 <input type="text" id="isLeaper" value="MM/DD/YYYY"> 
     <input type="button" value="Is Leap Year?" onclick="isLeaper();"> 
+1

你知道'「false」== true'嗎? – rekire 2013-03-18 18:31:37

+0

@rekire:實際上它不是,但是非空字符串'「false」是* truthy * – Bergi 2013-03-18 18:44:42

+0

我可以通過在if語句中添加go來達到此目的嗎? – 2013-03-18 18:46:50

回答

0

我想你想要這樣的:

function isLeaper() { 
    var year = document.getElementById("isLeaper").value; 
    if (! /* year is in DD/MM/YY format */) 
     return wholePigLatin(); 
    // else 
    // go on as normal 
    // … 
} 

要檢查的格式,您可能需要使用正則表達式:/^\d{2}\/\d{2}\/\d{4}$/.test(year),並且你也應該返回像是從truefalse實際布爾值isLeaper函數而不是那些字符串。

1

您可以像調用內置函數(如parseInt)一樣調用自己的函數。只需將行wholePigLatin();添加到您想要執行的任何位置即可。

爲了讓一個按鈕運行的兩種功能之一:剛纔介紹的功能包含您的布爾邏輯if語句,並在onClick事件稱之爲:

function handleButtonClick() { 
    var year = document.getElementById("isLeaper").value; 

    if(isFormattedAsDate(year)) { 
     isLeaper(); 
    } else { 
     wholePigLatin();  
    } 
} 

和HTML:

<input type="text" id="isLeaper" value="MM/DD/YYYY"> 
<input type="button" value="Is Leap Year?" onclick="handleButtonClick();"> 

您仍然需要實現isFormattedAsDate函數,以便在格式正確時返回true,否則返回false。

+0

太棒了!這非常有幫助!謝謝你給我看。 – 2013-03-19 15:56:48

+0

謝謝!我很高興我可以幫助:)請不要忘記接受答案 – gordonk 2013-03-20 17:46:08