Javascript代码——函数ToppingsWanted()有什么问题?
Javascript code-- What's wrong with function ToppingsWanted()?
我有一些麻烦的JavaScript分配的一部分。它涉及到使用两个数组:一个有元素,一个没有元素,如下所示。我已经包含了数组工作所需的所有代码,所以你不会被任何细节所迷惑,我会在后面解释。
下面是两个数组。数组'toppings'被元素填充,这些元素随后也会出现在列表框中。它下面的数组'selectedToppings'是一个空数组,它将保存用户从列表框中选择的元素。
var toppings = [ "Sausage" , "Pepperoni" , "Extra Cheese" , "Onions" ,
"Black Olives" , "Anchovies" , "Pineapple" , "Canadian Bacon" , "Ground Beef" ];
var selectedToppings = [];
下面的函数是程序的输出。当我第一次写它的时候,它没有显示任何东西,因为没有一个函数调用是正确的。我最近一直在做的是在每个函数调用之后放一个分号,并确保适当的函数在移动到下一个之前正确工作。现在我被困在函数ToppingsWanted()上。您会注意到"Amount Due:"后面有一个分号——这就是我之前提到的分号。我很确定函数调用是正确的,因为在它之前的函数quantity()和Size()工作得很好。
function thankYou()
{
document.pizzaForm.OrderText.value="Thank you for your order from BHC Pizza!'nYou have
ordered " + quantity() + " " + Size() + " pizza(s) with'n" + ToppingsWanted() +
"AmountDue ";
}
你在下面看到的函数ToppingsWanted()就是让我感到悲伤的东西。我试了很多方法让它工作,但没有任何效果。我访问了这个网站,检查了w3c学校,但找不到任何关于如何使这项工作的答案。在这一点上,我对JavaScript数组的了解还不够,不知道这里出了什么问题。需要做的是:当用户从前面提到的列表框中选择一个配料(函数下面显示的代码)时,从配料数组中取出适当的元素并放入selectedToppings数组中,然后函数调用将在其各自的行中显示selectedToppings数组中的每个元素。Dreamweaver显示没有语法错误,但我不知道是否有逻辑错误。帮助吗?
function ToppingsWanted()
{
for (var i=0; i<10; i++);
{
if (document.pizzaForm.lstIngredients.toppings[i].selected==true)
selectedToppings.push[i];
}
var TopsSelect=selectedToppings.join("'n");
return TopsSelect;
}
<select name="lstIngredients" size="9" multiple="multiple">
<option id="toppings[0]" value="1.00">Sausage</option>
<option id="toppings[1]" value="1.00">Pepperoni</option>
<option id="toppings[2]" value="1.00">Extra Cheese</option>
<option id="toppings[3]" value="1.00">Onions</option>
<option id="toppings[4]" value="1.00">Black Olives</option>
<option id="toppings[5]" value="1.00">Anchovies</option>
<option id="toppings[6]" value="1.00">Pineapple</option>
<option id="toppings[7]" value="1.00">Canadian Bacon</option>
<option id="toppings[8]" value="1.00">Ground Beef</option>
</select>
下面的代码应该可以解决您的问题。粘贴到文档主体
-
首先你需要将ToppingsWanted()函数绑定到列表的onChange事件。这样当列表的状态改变时,你的函数就会被触发。
-
与其循环遍历列表元素,不如直接使用selectedIndex属性获取选中的元素。
-
我已将值更改为索引。现在,函数将从列表中获取值,该列表的索引为0-8,并将相应的索引值从浇头数组中推送到所选浇头数组中。
<form name="pizzaForm"> <select name="lstIngredients" size="9" multiple="multiple" onChange="ToppingsWanted()"> <option id="toppings[0]" value="0">Sausage</option> <option id="toppings[1]" value="1">Pepperoni</option> <option id="toppings[2]" value="2">Extra Cheese</option> <option id="toppings[3]" value="3">Onions</option> <option id="toppings[4]" value="4">Black Olives</option> <option id="toppings[5]" value="5">Anchovies</option> <option id="toppings[6]" value="6">Pineapple</option> <option id="toppings[7]" value="7">Canadian Bacon</option> <option id="toppings[8]" value="8">Ground Beef</option> </select> </form> <script type="text/javascript"> var selectedToppings = []; var toppings = [ "Sausage" , "Pepperoni" , "Extra Cheese" , "Onions" ,"Black Olives" , "Anchovies" , "Pineapple" , "Canadian Bacon" , "Ground Beef" ]; function ToppingsWanted() { var ingredients = document.pizzaForm.lstIngredients; var chosenOption = ingredients.options[ingredients.selectedIndex]; selectedToppings.push(toppings[chosenOption.value]); alert(selectedToppings); return selectedToppings } </script>
一些注意事项。
-
这是相当多余的,你可以只是存储的值,你是存储在列表选项值本身的顶部数组。这样,如果配料改变了,你就不必更新两个东西了。
-
这段代码不会确保配料不会被添加两次。我可以做一个特别特别特别的奶酪披萨
- 我不知道我的编码有什么问题.(JavaScript)
- 我的流星路线出了什么问题
- 此nodeValue替换代码有什么问题
- 这个正则表达式的日期/时间有什么问题
- 我的CSS/Javascript下拉菜单测试代码出了什么问题
- 这个代码出了什么问题?(Jquery)
- 下面的Reg表达式出了什么问题
- 鼠标事件,我的代码出了什么问题
- 这个javascript语法有什么问题
- 动态创建foreignGroup并将其添加到svg中有什么问题
- 此代码中动态生成选择框有什么问题
- 我的javascript有什么问题?.className
- 这个 ajax.js 代码有什么问题
- JS代码有什么问题,让我知道代码是否可以改进
- 我的 Browserify JavaScript 代码有什么问题
- 图像上传功能将++(+1)副本添加到下一次上传.出了什么问题或如何重置“选定图像”
- 使用 Javascript 动态删除行.我的代码有什么问题
- AngularJS:这个注入我的控制器有什么问题
- 这个jQuery if语句有什么问题
- JavaScript:有人能告诉我我的代码出了什么问题吗?