2016-02-06 61 views
1

我目前在此方案中嘗試應用DRY原則。這是代碼。正如你所看到的,我試圖在不同的日子裏運行包含不同變量的腳本。我的意思是,如果直到週五,我可以簡單地發出一堆其他聲明,但這似乎不是正確的做事方式。任何指針?在JavaScript中應用DRY原則

感謝

<script> 
    function timer(){ 
     window.alert("The timer will start in 1 minute. Get ready!"); 
     var dayVar = new Date().getDay(); 
      if(dayVar == 1){ 
      var monPhp = "<?php echo $homeMon2 ?>"; 
      var min = 60 * monPhp; 
       setInterval(function(){ 
       var a = new Date(); 
       document.getElementById("result").innerHTML = "Minutes : " + min ; 
       min--; 
       if(min == -1){ 
        window.alert("Times up!"); 
        min = 60 * monPhp; 
       }   
       },60000); 
      } else if (dayVar == 2){ 
       var tuePhp = "<?php echo $homeTue2 ?>"; 
       var min = 60 * tuePhp; 
       setInterval(function(){ 
        var a = new Date(); 
        document.getElementById("result").innerHTML = "Minutes : " + min ; 
        min--; 
        if(min == -1){ 
         window.alert("Times up!"); 
         min = 60 * tuePhp; 
        } 
       },60000); 
      } 
     } 
</script> 
+0

如果每天之間的唯一區別是tuePhp/monPhp值,那麼您是否可以將它包裝在一個函數中並將它們作爲參數傳遞? –

回答

1

在你的PHP,創建一個數組

<?php 

    $arr = Array($homeSun2, $homeMon2, $homeTue2, $homeWed2 ... etc); 
?> 

然後用它

function timer(){ 
    var days = <?php echo json_encode($arr); ?>; 
    var dayVar = new Date().getDay(); 

    window.alert("The timer will start in 1 minute. Get ready!"); 

    var min = 60 * days[dayVar]; 
    var temp = min; 

    setInterval(function(){ 
     var a = new Date(); 
     document.getElementById("result").innerHTML = "Minutes : " + (temp--) ; 
     if(temp == -1){ 
      window.alert("Times up!"); 
      temp = min; 
     }   
    },60000); 
} 
+0

不得不編輯一下代碼,使其符合我的規格,但這是我的問題的完美答案! – Argentum

0

試試這個!

function timer() { 
     window.alert("The timer will start in 1 minute. Get ready!"); 
     var dayVar = new Date().getDay(); 
     var day = 0; 
     switch (dayVar) { 
      case 1 : 
       day = 1; 
       break; 
      case 2 : 
       day = 2; 
       break; 
      case 3 : 
       day = 3; 
       break; 
      case 4 : 
       day = 4; 
       break; 
      case 5 : 
       day = 5; 
       break; 
      case 6 : 
       day = 6; 
       break; 
      case 7 : 
       day = 7; 
       break; 
      default : 
       break; 
     } 

     var min = 60 * day; 
     setInterval(function() { 
      var a = new Date(); 
      document.getElementById("result").innerHTML = "Minutes : " + min; 
      min--; 
      if (min == -1) { 
       window.alert("Times up!"); 
       min = 60 * day; 
      } 
     }, 60000); 

    } 
+0

整個switch語句是不必要的。您正在接通一個變量以將另一個變量設置爲相同變量的值。 – ajon

+0

我已經使用開關,因爲一天可能是差異值 – Vivek