![](/img/trans.png)
[英]How to stop .click function being fired many times if user clicks many times
[英]Allow user to select how many times to run a function
我对javascript很陌生。 我已经创建了一个随机菜单生成器,其中从3个数组中的每个数组中随机选择一项(数组是主菜单,甜点,饮料)。 因此,当您单击“创建订单”按钮时,您会得到一个随机生成的列表(比萨饼,冰淇淋,啤酒等)。 但是,现在我想添加在1到10个菜单之间进行选择的选项,因此,如果用户一行中有4个人,则可以选择“ 4”,并且将随机生成4个订单。 因此,我需要运行该功能的用户输入的次数。
现在,我的div和button如下所示:
<div class="order">
<h3 id="orderDisplay">
<!--this is where order will display-->
</h3>
</div>
<button onClick="order()">Click to generate order</button>
因此,为了允许用户选择我已经开始的订单数量:
var(numOrders)=提示(“您要下几笔订单?”)开关(document.getElementById(numOrders)){
情况“ 1”:document.getElementById('orderDisplay')。innerHTML =(menuOne [randomMenuOne] + MenuTwo [randomMenuTwo] + menuThree [randomMenuThree];);
情况“ 2”:我不确定如何格式化它。 我需要运行功能“菜单”
另外,我想要一个下拉菜单,以便用户可以选择1-10,而不是提示。
抱歉,我知道很多。 我只是找不到一个好的教程,而且我什至不确定要用Google做什么。
一种获得所需结果的方法是在函数周围包装一个“ for循环”,其中“ peopleInParty”是用户为其聚会选择的人数,“ yourFunction()”是您要使用的函数想要运行X次。
for (int x = 0; x < peopleInParty; x++) {
yourFunction();
}
有很多方法可以做到这一点。
尝试了解以下内容:
i = 0 do console.log("Cooking pizza: "+i),i++ while (i<input.value)
<input id="input" value="12" />
这是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
最好看看您的代码示例。 但是,仅从描述开始,假设您具有三个数组,类似于:
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
作为可重用代码的形式来执行任务。
希望这可以帮助。
这是一个可以帮助您的代码段。
单击按钮功能后,将触发orderBtnClick 。 你是问你要多少才能使用提示符窗口中产生,那么你执行循环功能,需要重复和委托的数量要重复的功能。
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!"); }
<button onclick="orderBtnClick()" type="button"> Order! </button>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.