Reputation: 57
I am currently stuck trying to apply the DRY principle in this scenario. Here is the code. As you can see, I am trying to run scripts containing different variables on different days. I mean, I could simply shoot out a bunch of else if statements until Friday, but that just does not seem like the right way to do things. Any pointers?
Thanks
<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>
Upvotes: 1
Views: 1388
Reputation: 183
try this one !
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);
}
Upvotes: 1
Reputation: 318322
In your PHP, create an array
<?php
$arr = Array($homeSun2, $homeMon2, $homeTue2, $homeWed2 ... etc);
?>
Then use it
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);
}
Upvotes: 1