2013-08-15 4 views
1

Это состоит из двух проблем. Первая проблема - округление чисел до определенной десятичной точки. Вторая проблема заключается в подключении выпадающего меню к правой десятичной системе.Круглое значение с использованием выпадающего меню/переключателя

Первый мой код:

<style> 
    span{font-style:italic;} 
    span{color:green;} 
</style> 

<script> 
    function calcul(){ 
      var sales = parseFloat(document.getElementById("sales").value); 
      var OpExp = parseFloat(document.getElementById("OpExp").value); 
      var TaxAll = parseFloat(document.getElementById("TaxAll").value); 
      var Depre = parseFloat(document.getElementById("Depre").value); 
      var Divid = parseFloat(document.getElementById("Divid").value); 
      var TaxR = parseFloat(document.getElementById("TaxR").value); 
      //GP = Gross Profit 
      var GP = sales - OpExp; 
      //TaxInc = Taxable Income 
      var TaxInc = GP + TaxAll; 
      //NetInc = Net Income 
      var NetInc = TaxInc - ((TaxR/100) * TaxInc); 
      document.getElementById("NetIncome").innerHTML= 
      TaxInc - ((TaxR/100) * TaxInc); 
      //AtRE = Addition to Retained Earnings 
      document.getElementById("AtRE").innerHTML = NetInc - Divid; 
     } 
</script> 

<form action="" id="nothing"> 
In 2007 the British building firm Balfour Betty plc had sales of 
<input type="text" id="sales" maxlength="6" size="6"> 
million, total operating expenses of 
<input type="text" id="OpExp" maxlength="6" size="6"> 
million, a tax allowance (rebate) of 
<input type="text" id="TaxAll" maxlength="6" size="6"> 
million because of past losses, and 
<input type="text" id="Depre" maxlength="6" size="6"> 
depreciation. <strong>What is the net income of the 
firm?</strong><br /> 
<br /> 
Balfour Betty plc paid out <input type="text" id="Divid" maxlength="6" size="6"> million 
in cash dividends. <strong>What is the addition to retained earnings?</strong><br /> 
<br /> 
The tax rate is <input type="text" id="TaxR" maxlength="6" size="6"> %.<br /> 
<br /> 
    <input type="button" value="Calculate" id="but" onclick="calcul()" /><br /> 
<br /> 
</form> 

<strong>The Net Income of Balfour Betty plc is </strong><span id="NetIncome">XXX</span> 
<strong> million</strong><br /> 
<br /> 
<strong>The addition to retained earnings of Balfour Betty plc is </strong><span id="AtRE"> 
XXX</span><strong> million</strong> 
<br /> 
<br /> 

Первая проблема: округление числа. Следующий ответ: <span id="NetIncome"> необходимо округлить динамически. Я попытался добавить новую переменную с именем RNetInc и добавить следующее уравнение RNetInc = NetInc.toFixed(4), но он дал мне только два десятичных знака, и после обновления он больше не работает. Каков наилучший способ округления ответа на N десятичных знаков?

Вторая проблема заключается в том, что я не знаю, возможно ли это. Что я имею в виду, заключается в следующем: Меню раскрывающийся

<select> 
    <option value"1">1 decimal</option> 
    <option value"2">2 decimals</option> 
    <option value"3">3 decimals</option> 
</select> 

Итак, что я хочу, что, когда я нажимаю N decimal, ответ изменится N десятичной. Это очень сложная ситуация, но я часто нуждаюсь.

Поскольку я знаю только (очень) основы Javascript, даже используя Google, я не могу найти ответ. Может ли кто-нибудь получить меня на правильном пути (если это возможно)? Заранее спасибо.

ответ

1

Я предлагаю исправить только окончательные результаты, toFixed() возвращает строку.

HTML для select:

<select id="dec"> 
    <option value="1">1 decimal</option> 
    <option value="2">2 decimals</option> 
    <option value="3">3 decimals</option> 
</select> 

В calcul():

var decs = +(document.getElementById('dec').value); // Add this line 
document.getElementById("NetIncome").innerHTML = (TaxInc - ((TaxR/100) * TaxInc)).toFixed(decs); 
document.getElementById("AtRE").innerHTML = (NetInc - Divid).toFixed(decs); 

A live demo at jsFiddle (обновлено).

EDIT

Похоже, я частично missunderstood ваш вопрос. Проверьте обновленную скрипту, теперь вы можете также изменить количество десятичных знаков в любое время, выбрав значение от select.

+0

Предыдущая была на самом деле уже хорошо, но отредактированная версия еще лучше. Это определенно работает, но у меня есть вопрос: Я действительно не понимаю этот бит кода: 'var calc = false; window.onload = function() { document.getElementById ('dec'). AddEventListener ('change', function() { if (расчет) calcul();}); } ' – user2686401

+0

@ user2686401' if' предотвращает 'calcul()' 'перед тем, как кнопка' Calculate' будет нажата хотя бы один раз. В 'calcul()' 'вычисляется = true'. Это называется помечением. Если вы создадите систему проверки в 'calcul()', вы можете удалить отметку. – Teemu

Смежные вопросы