简体   繁体   English

我如何设计一个 function 以便它为每个按钮单击做不同的事情

[英]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.我设计了一个function,设置一个变量对应按钮被按下的次数,然后期望代码能正常运行。 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."同样,代码只是从“if games == 17”处开始执行而不停止。

What can I do to fix this?我该怎么做才能解决这个问题?

You can chain as many if/else if statements as you like:您可以根据需要链接任意多个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; }

This will print just "1" compared to the if/if version: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; }

which will print "1", "2" and "3"这将打印“1”、“2”和“3”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何更改此功能,以便每次单击一次只能播放一首随机歌曲? (JavaScript) - How do I alter this function so that only one, random song can be played at a time with each click? (JavaScript) 每次单击按钮时如何将背景图像更改为不同的图像? - How can I change the background image to a different image each time I click a button? 如何获得一个按钮来显示每次单击时不同的隐藏div? - How can I get one button to reveal different hidden divs with each click? 每次单击Javascript中的按钮时,如何播放不同的声音? - How to play different sounds each time I click a button in Javascript? 我如何创建一个单一的 function 将由事件侦听器调用,而不是为每个不同的按钮调用 function? - How can I create ONE single function that will be called by an event listener instead of function for each different button? 如何通过单击按钮调用功能? - How can I call a function at a click of a button? 如何让 HTML 按钮在两次单独的点击中做两件不同的事情? - How can I make an HTML Button do two different things on two separate clicks? 我该如何挂钩,以便AngularJS填充页面? - How can I hook things up so AngularJS will populate the page? 如何使用循环打印按钮并让它在每次打印时执行不同的功能? - How can I print a button using a loop and have it perform a different function for each time it is printed? 如何在它们自己的范围内保留用于不同事物的相同函数名(它可能不是正确的词)? - How can I keep same function names meant for different things in their own scope (It may not be the right word)?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM