数组的Javascript计算器问题

时间:2014-01-13 16:29:17

标签: javascript arrays calculator

我正在尝试使用我提出的示例来构建概念验证,以展示我们如何通过构建计算器在JavaScript中实现Sharepoint

一切似乎都很好,但我正在努力弄清楚为什么一切都是未确定的NaN

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<SCRIPT LANGUAGE="JavaScript">
    function calc (form) {
        var multipliers = [ 0.5, 0.25, 0.10, 0.05, 100, 50 ];
        var bonus;
        var imyindex = form.level.value-1;
        if (form.level.value < 5)
        {
            bonus = (((form.salary.value * multipliers[imyindex]) * form.profit.value) * form.growth.value);
        }
        else bonus = multipliers[imyindex];

        alert (multipliers[imyindex]);
        alert (imyindex);
        alert ("Your bonus is " + bonus);
    }

</script>
</head>

<body>
<table width="161" border="-1">
  <tr>
    <td width="85%"><form id="form" name="form" method="get" action="">
      <p>
        <label for="level">Level: </label>
        <select name="level" id="level">
          <option value=”1”>A</option>
          <option value=”2”>B</option>
          <option value=”3”>C</option>
          <option value=”4”>D</option>
          <option value=”5”>E</option>
          <option value=”6”>F</option>
          </select>

        </p>
      <p>
        <label for="salary">Salary: </label>
        <input type="text" name="salary" id="salary" />
      </p>

      <p>
        <label for="salary">Profit: </label>
        <input name="profit" type="text" id="profit" value=".25" />
      </p>
      <p>
        <label for="salary">Growth: </label>
        <input name="growth" type="text" id="growth" value=".75" />
      </p>
      <p>
      <center>
      <INPUT TYPE="button" NAME="button" Value="Calculate" onClick="calc(this.form)"/>
      </p>
    </form></td>
  </tr>
</table>
</body>
</html>

4 个答案:

答案 0 :(得分:4)

您的<option>值附近有明智的引号。这导致该值为”1”,而不仅仅是1,这会使您的计算失败。

答案 1 :(得分:0)

您使用的报价类型错误。也许你正在使用另一个文本编辑器,它引入了引号:

此引号会将选定的值设为”1”而不是1,因此会错误地将其标记为文字,从而导致var imyindex = form.level.value-1;等于NaN

将引号替换为加倍"或单'引号,您的问题应该得到解决。

答案 2 :(得分:0)

以下是工作代码:您无法在单击时将表单作为对象发送到该函数,该选项不应具有字符串值,或者您可以使用parseInt将它们转换为整数

 otherwise the working example is here live just use :)

http://jsfiddle.net/ALJ6W/

答案 3 :(得分:0)

我是名为Appizy的软件开发人员,可以在创建计算器时避免头痛。基本上它将OpenDocument电子表格转换为HTML + CSS + JS ..

您只需在OpenOffice或LibreOffice上创建计算器即可。然后Appizy立即将其变成一个独立的网络应用程序。

我希望它可以帮助您解决问题!

最佳, 尼古拉斯