簡體   English   中英

我如何設計一個 function 以便它為每個按鈕單擊做不同的事情

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

我正在做一個項目,我需要一個按鈕來根據按下它的時間來做不同的事情。 我設計了一個function,設置一個變量對應按鈕被按下的次數,然后期望代碼能正常運行。 不幸的是,當我執行它時,我發現代碼是一次性執行的,因為一旦點擊更新,它就會連續運行。 這是我試圖做的:

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

這是完整的程序:

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";
    }
  }
}

同樣,代碼只是從“if games == 17”處開始執行而不停止。

我該怎么做才能解決這個問題?

您可以根據需要鏈接任意多個if/else if語句:

 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; }

if/if版本相比,這將只打印“1”:

 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; }

這將打印“1”、“2”和“3”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM