0

是的,所以我在 3 个下拉框中有值,并且还会有更多(考虑添加大约 20 个下拉框,这些下拉框会添加到项目的最终价格。这是 HTML 的代码。

<form id="myform1>
<p>Testing 1</p>
<select id="Test1">
<option value="24">Item one</option>
<option value="29">Item Two<option>
<!--I have the first box going to 20 items-->
</select>

<p>Testing 2</p>
<select id="Test2">
<option value="25">Item one</option>
<option value="100">Item Two<option>
<!--I have the second box going to 10 items-->
</select>

<p>Testing 3</p>
<select id="Test3">
<option value="24">Item one</option>
<option value="100">Item Two<option>
<!--I have the third box going to 10 items-->
</select>


</form>
<button onclick="myFunction()">Update</button>
<p id="demo"></p>

然后我有我的 Javascript

function myFunction()
{
var a = document.getElementById("list1");
var A = a.options[a.selectedIndex].value;

var b = document.getElementById("list2");
var B = b.options[a.selectedIndex].value;

var c = document.getElementById("list3");
var C = c.options[a.selectedIndex].value;

var IntA = parseInt(A);
var IntB = parseInt(B);
var IntC = parseInt(C);

var x=IntB + IntA;
var y=x + IntC;
var demoP=document.getElementById("demo")
demoP.innerHTML= y;
}

我的问题是,只有当我完全取出 var c 然后取出 var y 并让它计算到 x 时它才有效。我尝试了很多方法,不知所措。干杯

PS Java 脚本位于底部的脚本标记中

4

2 回答 2

3

您已经习惯于a.selectedIndex获取所有三个元素的选定项目。将其更改为使用b.selectedIndexc.selectedIndex在适当的位置。或者你可以直接说a.value,b.valuec.value不是通过options集合。

此外,您的 html 中的 id 属性与您在 JS 中使用的属性不匹配。

解决这些问题,它可以工作,你可以在这里看到:http: //jsfiddle.net/6WWdc/

PS 养成始终将基数作为第二个参数传递给的习惯是个好主意parseInt(),例如IntA = parseInt(A, 10);- 否则如果输入字符串有前导0或前导0x,它可能(取决于浏览器和"use strict";指令的存在)被解释为八进制或十六进制。

于 2013-02-11T21:03:23.417 回答
0
function myFunction()
{
    var a = document.getElementById("list1");
    var A = a.options[a.selectedIndex].value;

    var b = document.getElementById("list2");
    var B = b.options[b.selectedIndex].value; //changed to var b

    var c = document.getElementById("list3");
    var C = c.options[c.selectedIndex].value; //changed to var c

    //...
}
于 2013-02-11T21:05:02.977 回答