2016-02-06 6 views
1

В настоящее время я пытаюсь применить принцип DRY в этом сценарии. Вот код. Как вы можете видеть, я пытаюсь запускать скрипты, содержащие разные переменные в разные дни. Я имею в виду, я мог бы просто стрелять в кучу других, если заявления до пятницы, но это просто не похоже на правильный способ сделать что-то. Любые указатели?Примените принцип DRY с JavaScript

Благодаря

<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