【问题标题】:Allow user to select how many times to run a function允许用户选择运行函数的次数
【发布时间】:2018-01-29 18:45:09
【问题描述】:

我对 javascript 很陌生。我已经创建了一个随机菜单生成器,其中从 3 个数组中的每一个中随机选择一个项目(数组是主菜、甜点、饮料)。因此,当您单击“创建订单”按钮时,您会得到一个随机生成的列表(比萨、冰淇淋、啤酒等)。但是现在我想添加在 1 到 10 个菜单之间进行选择的选项,所以如果用户有 4 个人在他们的聚会中,他们可以选择“4”,并且会有 4 个随机生成的订单。所以我需要按照用户输入的次数运行该函数。

现在我的 div 和按钮如下所示:

<div class="order">
<h3 id="orderDisplay">
<!--this is where order will display-->
</h3>
</div>

<button onClick="order()">Click to generate order</button>

那么为了让用户选择我已经开始的订单数量:

var(numOrders) = prompt("您要下多少订单?") switch (document.getElementById(numOrders)) {

案例“1”: document.getElementById('orderDisplay').innerHTML = (menuOne[randomMenuOne] + MenuTwo[randomMenuTwo] + menuThree[randomMenuThree];);

案例“2”:我不确定如何格式化。我需要运行“菜单”功能

另外,我想要一个下拉菜单,以便用户可以选择 1-10,而不是提示。

对不起,我知道这很多。我只是找不到一个好的教程,我什至不知道用谷歌搜索什么。

【问题讨论】:

  • 发布您的代码或突出问题的代码示例。您是在问如何将您的逻辑封装到可重用的函数中?
  • 你已经尝试了什么?一个小提示:也许你可以使用 HTML input 元素或 JavaScript 函数 prompt()
  • 我有一个 var(numOrders) = prompt()

标签: javascript


【解决方案1】:

获得所需结果的一种方法是在函数周围包裹一个“for 循环”,其中“peopleInParty”是用户为其聚会选择的人数,“yourFunction()”是函数您想要运行 X 次。

for (int x = 0; x < peopleInParty; x++) {
    yourFunction();
}

【讨论】:

    【解决方案2】:

    有不止一种方法可以做到这一点。

    试着理解这一点:

    i = 0
    do console.log("Cooking pizza: "+i),i++
    while (i<input.value)
    &lt;input id="input" value="12" /&gt;

    这是执行while循环。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do...while

    另一种方法是使用 for 循环。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration

    【讨论】:

      【解决方案3】:

      最好查看您的代码示例。但是只是脱离您的描述,假设您有三个数组,类似于:

      var main = ["chicken", "beef", "pork", "fish", "veggie"];
      var dessert = ["cake", "ice cream", "pie", "cupcake", "jello"];
      var beverage = ["pop", "beer", "water", "whiskey", "juice"];
      

      您可以创建一个函数,通过从每个数组中随机选择一个元素,从这些数组中生成菜单。您可以将其包装在 for 循环中,以执行任何次数的操作。

      例如:

      function createMenu(numberOfMenus) {
      
        var menus = {};  // Object to hold the menus
      
        for (var i = 0; i < numberOfMenus; i++) {  // Repeat numberofMenus times
      
          // Randomly select an element from each array
          var m = main[Math.floor(Math.random() * main.length)];
          var d = dessert[Math.floor(Math.random() * dessert.length)];
          var b = beverage[Math.floor(Math.random() * beverage.length)];
      
          // Add menu to menus object
          menus[i] = [m, d, b];
      
        }
      
        // Return the menus object
        return menus;
      
      }
      

      然后您可以提示用户输入他们想要创建的菜单数量,使用该数字作为输入参数调用函数,然后对结果执行任何您想要的操作。比如:

      var p = prompt("How many menus?");
      console.log(createMenu(p));
      

      这里的主要思想是使用for 循环来重复菜单选择过程,只要你愿意,并使用function 作为可重用代码的形式来执行任务。

      希望这会有所帮助。

      【讨论】:

      • 好的,我有这个功能,但它不是一个循环。谢谢!
      【解决方案4】:

      这里有一个代码 sn-p 可以帮助你。

      当你点击按钮时,orderBtnClick 函数被触发。系统会询问您要使用提示窗口生成多少订单,然后执行 repeat 函数,该函数需要重复次数并委托给您要重复的函数。

      function orderBtnClick() {
        var numberOfOrders = prompt("How many orders you want to generate?");
        repeat(numberOfOrders, orderGenerator)
      }
      
      function repeat(times, fcn) {
        for (var i = 0; i < times; i++) {
          fcn();
        }
      }
      
      function orderGenerator() {
        //your code here
        console.log("Order generated!");
      }
      &lt;button onclick="orderBtnClick()" type="button"&gt; Order! &lt;/button&gt;

      【讨论】:

        猜你喜欢
        • 2019-07-17
        • 2014-12-13
        • 2019-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 2017-02-25
        相关资源
        最近更新 更多