2014-01-13 4 views
0

Я пытаюсь построить доказательство концепции, используя пример, который я придумал, чтобы показать, как мы можем реализовать JavaScript в пределах Sharepoint, построив калькулятор.Javascript Calculator Issue with Array

Все кажется прекрасным, но у меня болит голова, пытаясь понять, почему все либо undefinied или 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 имеет «Инструменты для разработчиков», а Firefox - «Веб-консоль». – 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 мгновенно превращает его в автономное веб-приложение.

Надеюсь, это поможет вам решить вашу проблему!

Best, Nicolas