2014-11-07 3 views
0

Я пытаюсь заставить этот калькулятор payslip запускать несколько операторов if, вложенных в eachother.Несколько вложенных операторов if не вычисляются

условия он требует, чтобы удовлетворить следующим образом:

Если ежемесячный размер заработной платы составляет 2000, например и последняя буква кода NI есть А

разработать национальный резерв страхования вы сделайте валовой платеж, деленный на 4. 2000/на 4 = 500. Это означает, что NI-полоса равна a2.

Сумма тогда «брутто * a2» (как показано на переменные, перечисленные в верхней части кода)

Это отображает результат как «Ваш NI дедукции: ??»

Я изо всех сил, чтобы получить, если заявления для запуска, если другая буква вводится .. Например «B»

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 

<script> 
function computeNet() { 
<!--NI Codes - use https://www.gov.uk/national-insurance-rates-letters/contribution-rates for updates on NI rates--!> 
//NI Code A// 
var a1 = 0; 
var a2 = 0.12; 
var a3 = 0.12; 
var a4 = 0.02; 
//NI Code B// 
var b1 = 0; 
var b2 = 0.0585; 
var b3 = 0.0585; 
var b4 = 0.02; 
//NI Code C// 
var c = 0; 
var d1 = 1.4; 
var d2 = 0.106; 
var d3 = 0.12; 
var d4 = 0.02; 
//NI Code E// 
var e1 = 0; 
var e2 = 0.0585; 
var e3 = 0.0585; 
var e4 = 0.02; 
//NI Code J// 
var j1 = 0; 
var j2 = 0.02; 
var j3 = 0.02; 
var j4 = 0.02; 
//NI Code L// 
var l1 = 1.4; 
var l2 = 0.02; 
var l3 = 0.02; 
var l4 = 0.02; 

var gross = document.getElementById('gross').value; 
var tax_code = document.getElementById('tcode').value; 
var ni_code = document.getElementById('ni').value; 

var allowance = ((gross - ((tax_code * 10)/12))); 
var ni_allowance = (gross/4); 


     if (ni_code = "A") { 
      if (ni_allowance > 111 && ni_allowance < 153) { 
       ni_minus = (gross * a1); 
      } 
      else if (ni_allowance > 153.01 && ni_allowance < 770) { 
       ni_minus = (gross * a2); 
      } 
      else if (ni_allowance > 770.01 && ni_allowance < 805) { 
       ni_minus = (gross * a3); 
      } 
      else { 
       ni_minus = (gross * a4); 
      } 
     if (ni_code = "B") { 
      if (ni_allowance > 111 && ni_allowance < 153) { 
       ni_minus = (gross * b1); 
      } 
      else if (ni_allowance > 153.01 && ni_allowance < 770) { 
       ni_minus = (gross * b2); 
      } 
      else if (ni_allowance > 770.01 && ni_allowance < 805) { 
       ni_minus = (gross * b3); 
      } 
      else { 
       ni_minus = (gross * b4); 
      } 
     } 
     document.getElementById('ni_deduction').innerHTML = "Your NI deduction:"+ni_minus; 
} 
} 
</script> 
</head> 

<body> 
<p>Your Monthly Gross Pay: £<input id="gross" type="number" onChange="computeNet()"></p> 
<p>The numerical part of your tax code: <input id="tcode" type="number" onChange="computeNet()"></p> 
<p>last letter of your NI code: <input id="ni" type="text" onChange="computeNet()"></p> 

<h2 id="gross_pay"></h2>  
<h2 id="paye-deduction"></h2> 
<h2 id="ni_deduction"></h2> 
<h2 id="net_pay"></h2> 
</body> 
</html> 

код здесь: http://jsfiddle.net/n384noLk/

Жду вашей помощи

+0

Вы должны использовать двойные равные знаки для сравнения. В настоящее время это просто назначение значений. 'if (ni_code ==" A ")' – Himal

ответ

1

Если «B» необходимо вывести из «А».

Поскольку он вложен, вы полностью пропустите инструкцию «В», если ni_code не равно «A».

if (ni_code == "A") { 
    if (ni_allowance > 111 && ni_allowance < 153) { 
     ni_minus = (gross * a1); 
    } else if (ni_allowance > 153.01 && ni_allowance < 770) { 
     ni_minus = (gross * a2); 
    } else if (ni_allowance > 770.01 && ni_allowance < 805) { 
     ni_minus = (gross * a3); 
    } else { 
     ni_minus = (gross * a4); 
    } 
} elseif (ni_code == "B") { 
     if (ni_allowance > 111 && ni_allowance < 153) { 
      ni_minus = (gross * b1); 
     } else if (ni_allowance > 153.01 && ni_allowance < 770) { 
      ni_minus = (gross * b2); 
     } else if (ni_allowance > 770.01 && ni_allowance < 805) { 
      ni_minus = (gross * b3); 
     } else { 
      ni_minus = (gross * b4); 
     } 
} 

http://jsfiddle.net/n384noLk/2/

0

равенство проверяется == в JavaScript поэтому должны быть:

if(ni_code == "A") 

и

if(ni_code == "B") 

Также вы не закрываем ваш первый, если заявление, так это есть

if(ni_code == "B") 

как продолжение вложенных if. Вам нужно другое} после:

else { 
    ni_minus = (gross * a4); 
}