2014-01-13 130 views
0

我试图建立一个概念证明使用我想出了一个例子,以展示如何通过构建一个计算器在Sharepoint中实现JavaScriptJavaScript计算器问题与数组

一切似乎都很好,但我让自己头疼,试图找出为什么一切都是未确定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> 
+0

当你点击输入型按钮,它会提交表单。尝试在关闭窗体标签后移动输入元素,或者使用不同的元素来触发您的功能。 –

+0

尝试使用JS调试器,它会让你的生活更轻松,它会帮助你找到这些问题,Chrome有'Developer Tools',Firefox有'Web Console'。 – Goodwine

回答

4

您的<option>值附近有精明的引号。这导致值为”1”而不仅仅是1,这就是你的计算方式。

+0

就是这样!我不知道我在想什么。在我看到你的帖子之前,我确实发现了它。非常感谢!! – user3007201

0

您正在使用错误的引号类型。也许你正在使用另一个文本编辑器来引入卷曲引号:

此报价作出选择为”1”而非1值,因此它被错误地标记为文本,并因此导致var imyindex = form.level.value-1;等于NaN

替换卷曲报价加倍"或单个'报价,并且您的问题应该解决。

0

这里是工作的代码:你不能发送形式为对象的功能上点击选项不应该有字符串值,或者您可以使用parseInt函数将其转换为整数

otherwise the working example is here live just use :) 

http://jsfiddle.net/ALJ6W/

0

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

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

我希望它能帮助你解决你的问题!

最佳, 萨科