简体   繁体   中英

How can I design a function so that it does different things for each button click

I'm working on a project where I need a button to do different things depending on when it is pressed. I designed a function, set a variable to correspond to the amount of times the button was pressed, and then expected the code to work properly. Unfortunately, when I executed it, I found that the code executed all at once, because once the clicks updated, it ran continuously. Here is what I tried to do:

function doSomething() {
    if (clicks == 1){
        //do something
    }
    if (clicks == 2) { 
       // do something
    }
}

Here is the full program:

function playGame(){
  var games;
  if (games < 16){
  games += 1;
  document.getElementById("weektracker").innerHTML = "Week " + games;
  if (teamoverall > 74 && teamoverall < 81){
    var x = Math.random();
    if (x > 0.8){
      randomWin();
    }
    if (x < 0.8){
      randomLoss();
    }
  }
  if (teamoverall > 80 && teamoverall < 86){
    var x = Math.random();
    if (x > 0.7){
      randomWin();
    }
    if (x < 0.7){
      randomLoss();
    }
  }
  if (teamoverall > 85 && teamoverall < 88){
    var x = Math.random();
    if (x > 0.6){
      randomWin();
    }
    if (x < 0.6){
      randomLoss();
    }
  }
  if (teamoverall > 87 && teamoverall < 90){
    var x = Math.random();
    if (x > 0.5){
      randomWin();
    }
    if (x < 0.5){
      randomLoss();
    }
  }
  if (teamoverall > 89 && teamoverall < 93){
    var x = Math.random();
    if (x > 0.4){
      randomWin();
    }
    if (x < 0.4){
      randomLoss();
    }
  }
  if (teamoverall > 92 && teamoverall < 96){
    var x = Math.random();
    if (x > 0.3){
      randomWin();
    }
    if (x < 0.3){
      randomLoss();
    }
  }
  if (teamoverall > 95){
    var x = Math.random();
    if (x > 0.2){
      randomWin();
    }
    if (x < 0.2){
      randomLoss();
    }
  }

}
if (games == 16){
  alert("Week 17" + "\n" + "Bye Week");
  games += 1;
}
if (games == 17){
  //Decide Playoff Outcome
  if (wins < 6){
    alert("You did not qualify for the NFL Playoffs.");
    document.getElementById("weektracker").innerHTML = "Offseason";
    document.getElementById("schedule").style.display = "none";
    document.getElementById("play").style.display = "none";
    document.getElementById("start").style.display = "block";
    document.getElementById("record").style.display = "none";
  }
  if (wins > 5 && wins < 9){
    var a1 = Math.random();
    if (a1 > 0.3){
      alert("You did not qualify for the NFL Playoffs.");
      document.getElementById("weektracker").innerHTML = "Offseason";
      document.getElementById("schedule").style.display = "none";
      document.getElementById("play").style.display = "none";
      document.getElementById("start").style.display = "block";
      document.getElementById("record").style.display = "none";
    }
    if (a1 < 0.3){
      games +=1;
      alert("You have qualified for the Wild Card Round.");
      document.getElementById("weektracker").innerHTML = "Wild Card Round";
      var b1 = randomNumber(1,30);
      teams.splice(b1,1);
      document.getElementById("wildcardteam").innerHTML = teams[b1];
    }
  }
  if (wins > 8 && wins < 11){
    var a2 = Math.random();
    if (a2 > 0.7){
      alert("You did not qualify for the NFL Playoffs.");
      document.getElementById("weektracker").innerHTML = "Offseason";
      document.getElementById("schedule").style.display = "none";
      document.getElementById("play").style.display = "none";
      document.getElementById("record").style.display = "none";
      document.getElementById("start").style.display = "block";
    }
    if (a2 < 0.7){
      games +=1;
      alert("You have qualified for the Wild Card Round.");
      document.getElementById("weektracker").innerHTML = "Wild Card Round";
      var b1 = randomNumber(1,30);
      teams.splice(b1,1);
      document.getElementById("wildcardteam").innerHTML = teams[b1];
    }
  }
  if (wins > 10){
    games +=1;
    alert("You have qualified for the NFL Playoffs and have a bye in the Wild Card Round");
    document.getElementById("weektracker").innerHTML = "Wild Card Round";
    var b1 = randomNumber(1,30);
    teams.splice(b1,1);
    document.getElementById("divisionteam").innerHTML = teams[b1];
    document.getElementById("wildcardteam").innerHTML = "Bye";
    bye = 1;
  }
}
if (games == 18){
  if (bye == 0){
    var a2 = Math.random();
    if (teamoverall < 85){
      if (a2 < 0.4){
        randomWin();
        games += 1;
        document.getElementById("weektracker").innerHTML = "Division Round";
        var b2 = randomNumber(1,29);
        document.getElementById("divisionteam").innerHTML = teams[b2];
      }
      if (a2 > 0.4){
        randomLoss();
        alert("The " + teamname + " have been eliminated from the playoffs.");
        document.getElementById("weektracker").innerHTML = "Offseason";
        document.getElementById("schedule").style.display = "none";
        document.getElementById("play").style.display = "none";
        document.getElementById("record").style.display = "none";
        document.getElementById("start").style.display = "block";
      }
    }
    if (teamoverall > 84 && teamoverall < 90){
      if (a2 < 0.5){
        randomWin();
        games += 1;
        document.getElementById("weektracker").innerHTML = "Division Round";
        var b2 = randomNumber(1,29);
        document.getElementById("divisionteam").innerHTML = teams[b2];
      }
      if (a2 > 0.5){
        randomLoss();
        alert("The " + teamname + " have been eliminated from the playoffs.");
        document.getElementById("weektracker").innerHTML = "Offseason";
        document.getElementById("schedule").style.display = "none";
        document.getElementById("play").style.display = "none";
        document.getElementById("record").style.display = "none";
        document.getElementById("start").style.display = "block";
      }
    }
    if (teamoverall > 89 && teamoverall < 93){
      if (a2 < 0.6){
        randomWin();
        games += 1;
        document.getElementById("weektracker").innerHTML = "Division Round";
        var b2 = randomNumber(1,29);
        document.getElementById("divisionteam").innerHTML = teams[b2];
      }
      if (a2 > 0.6){
        randomLoss();
        alert("The " + teamname + " have been eliminated from the playoffs.");
        document.getElementById("weektracker").innerHTML = "Offseason";
        document.getElementById("schedule").style.display = "none";
        document.getElementById("play").style.display = "none";
        document.getElementById("record").style.display = "none";
        document.getElementById("start").style.display = "block";
      }
    }
    if (teamoverall > 92){
      if (a2 < 0.75){
        randomWin();
        games += 1;
        document.getElementById("weektracker").innerHTML = "Division Round";
        var b2 = randomNumber(1,29);
        document.getElementById("divisionteam").innerHTML = teams[b2];
      }
      if (a2 > 0.75){
        randomLoss();
        alert("The " + teamname + " have been eliminated from the playoffs.");
        document.getElementById("weektracker").innerHTML = "Offseason";
        document.getElementById("schedule").style.display = "none";
        document.getElementById("play").style.display = "none";
        document.getElementById("record").style.display = "none";
        document.getElementById("start").style.display = "block";
      }
    }
  }
  if (bye == 1){
    alert("Bye");
    games += 1;
    document.getElementById("weektracker").innerHTML = "Division Round";
    var b2 = randomNumber(1,29);
    document.getElementById("divisionteam").innerHTML = teams[b2];
  }
}


if (games == 19){
  alert("yo");
  var a3 = Math.random();
  if (teamoverall < 85){
    if (a3 < 0.3){
      randomWin();
      games += 1;
      document.getElementById("weektracker").innerHTML = "Division Round";
      var b2 = randomNumber(1,29);
      document.getElementById("divisionteam").innerHTML = teams[b2];
      teams.splice(b2,1);
    }
    if (a3 > 0.3){
      randomLoss();
      alert("The " + teamname + " have been eliminated from the playoffs.");
      document.getElementById("weektracker").innerHTML = "Offseason";
      document.getElementById("schedule").style.display = "none";
      document.getElementById("play").style.display = "none";
      document.getElementById("record").style.display = "none";
      document.getElementById("start").style.display = "block";
    }
  }
  if (teamoverall > 84 && teamoverall < 90){
    if (a3 < 0.45){
      randomWin();
      games += 1;
      document.getElementById("weektracker").innerHTML = "Division Round";
      var b2 = randomNumber(1,29);
      document.getElementById("divisionteam").innerHTML = teams[b2];
      teams.splice(b2,1);
    }
    if (a3 > 0.45){
      randomLoss();
      alert("The " + teamname + " have been eliminated from the playoffs.");
      document.getElementById("weektracker").innerHTML = "Offseason";
      document.getElementById("schedule").style.display = "none";
      document.getElementById("play").style.display = "none";
      document.getElementById("record").style.display = "none";
      document.getElementById("start").style.display = "block";
    }
  }
  if (teamoverall > 89 && teamoverall < 93){
    if (a3 < 0.55){
      randomWin();
      games += 1;
      document.getElementById("weektracker").innerHTML = "Division Round";
      var b2 = randomNumber(1,29);
      document.getElementById("divisionteam").innerHTML = teams[b2];
      teams.splice(b2,1);
    }
    if (a3 > 0.55){
      randomLoss();
      alert("The " + teamname + " have been eliminated from the playoffs.");
      document.getElementById("weektracker").innerHTML = "Offseason";
      document.getElementById("schedule").style.display = "none";
      document.getElementById("play").style.display = "none";
      document.getElementById("record").style.display = "none";
      document.getElementById("start").style.display = "block";
    }
  }
  if (teamoverall > 92){
    if (a3 < 0.7){
      randomWin();
      games += 1;
      document.getElementById("weektracker").innerHTML = "Division Round";
      var b2 = randomNumber(1,29);
      document.getElementById("divisionteam").innerHTML = teams[b2];
      teams.splice(b2,1);
    }
    if (a3 > 0.7){
      randomLoss();
      alert("The " + teamname + " have been eliminated from the playoffs.");
      document.getElementById("weektracker").innerHTML = "Offseason";
      document.getElementById("schedule").style.display = "none";
      document.getElementById("play").style.display = "none";
      document.getElementById("record").style.display = "none";
      document.getElementById("start").style.display = "block";
    }
  }
}

Again, the code just executes without stopping starting at "if games == 17."

What can I do to fix this?

You can chain as many if/else if statements as you like:

 var games = 1; if (games == 1) { console.log(1); games += 1; } else if (games == 2) { console.log(2); games += 1; } else if (games == 3) { console.log(3); games += 1; }

This will print just "1" compared to the if/if version:

 var games = 1; if (games == 1) { console.log(1); games += 1; } if (games == 2) { console.log(2); games += 1; } if (games == 3) { console.log(3); games += 1; }

which will print "1", "2" and "3"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM