0

创建了一个基本表单、三个下拉列表和一个按钮。我试图将向下列表中的三个值相乘。我必须将数据传递给函数。我已经运行了代码,结果一直是 0?我认为我没有正确地将数据从函数传递到函数?

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>

<body>
<script>
function multiply(number1, number2, number3)
{
    var firstnum=0;
    var secondnum=0;
    var thirdnum=0;
    var answer;
    firstnum=parseInt(number1);
    secondnum=parseInt(number2);
    thirdnum==parseInt(number3);
    answer=(firstnum*secondnum*thirdnum);
    alert(answer)
}

</script>

<form name="Example1">
Number 1:
<select id="num1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<br/>
Number 2:
<select id="num2">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<br/>
Number 2:
<select id="num3">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<br/>
<input type=button value="muliply" onclick="multiply(num1.value, num2.value, num3.value)" />
</form>
</body>
</html>
4

2 回答 2

4

你的问题是:

thirdnum==parseInt(number3);比较,而不是分配,所以thirdnum永远都是0

由于您乘以thirdnum,并且任何 × 0 都是 0,因此您将始终得到 0 作为输出。

更改===

如果您使用JS Hint对您的代码进行了 QAed,这将被选中。


您应该解决的不良做法是:

  1. num1.value假设将为每个具有 id 的元素创建全局 JS 变量。不要假设,使用document.getElementById
  2. parseInt(number1)没有基数。始终指定您使用的数字系统(通常以 10 为基数),因此不会从数据中推断出意外结果:parseInt(number1, 10);
  3. <form name="Example1">,表单上的 name 属性是该属性正确出现之前的遗留物id。用于id识别客户端代码的元素。
  4. onclick属性在分离关注点方面做得很差。使用addEventListener(如果需要支持旧版本的 IE,也可以使用 YUI 或 jQuery 等库)。
于 2013-10-03T11:25:33.310 回答
0

好的,因为这个,你一直得到 0

thirdnum==parseInt(number3);

在你的multiply功能中

将其更改为

thirdnum=parseInt(number3);

你应该很高兴

这是一个演示

于 2013-10-03T11:30:33.557 回答