2016-07-26 47 views
0

我正在使用JavaScript創建成本計算器。 我在我的代碼中有兩個按鈕;清除和計算,並且都是第一次正常工作。 但是,當我選擇不同的下拉菜單並嘗試再次計算時,它不會重新計算,但表中仍保留相同的數字或空白字段。使用Javascript的成本計算器

我該如何重新計算?有沒有可能做到這一點沒有清除按鈕?

var settingValue; 
 
    
 
    function clearForm(){ 
 
    document.getElementById("myForm").reset(); 
 
    } 
 
    
 
    
 
    function settingValue() { 
 
     var payment; 
 
     var copayPerc = document.getElementById("copayPerc").value; 
 
     settingValue = document.getElementById("Setting").value; 
 
     payment=medicarePaymentCal(settingValue); 
 
     document.getElementById("medipayment").value = payment; 
 
     document.getElementById("adj").value=seqAdjCal(payment); 
 
    \t document.getElementById("net").value=payment+seqAdjCal(payment); 
 
     
 
     document.getElementById("copay").value=payment*0.2; 
 
     document.getElementById("actualCopay").value=payment*0.2*copayPerc; 
 
     totalProductCost(); 
 
    } 
 
    
 
    
 
    function medicarePaymentCal(value1) { 
 
     var result; 
 
     if (value1 == "Office") { 
 
     return 1411.21; 
 
     } else if (value1="HOPD") { 
 
     return 500; 
 
     } 
 
    } 
 
     
 
    function seqAdjCal(val){ 
 
     return -(0.02*(0.8*val)); 
 
     
 
    } 
 
     
 
    function totalProductCost(){ 
 
     var applications=document.getElementById("applications").value; 
 
     var productCost=document.getElementById("productCost").value; 
 
     var total=applications*productCost; 
 
     \t document.getElementById("totalProductCost").value = total; 
 
    } 
 
<html> 
 
    <head> 
 
    </head> 
 
    <body> 
 
    <form method="post" id="myForm"> 
 
    <table border=1> 
 
    <tr> 
 
     <td>Setting : </td> 
 
     <td><select id="Setting"> 
 
     <option value="Office">Office</option> 
 
     <option value="HOPD">HOPD</option> 
 
     </select></td> 
 
    </tr> 
 
    <tr> 
 
     <td>Facility : </td> 
 
     <td><select id="Facility"> 
 
     <option value="100015">Mount Sinai, 123 Main Street, New York</option> 
 
     <option value="100016">NYU Medical, 25 North Broadway, New York</option> 
 
     </select></td> 
 
    
 
     <tr> 
 
      <td>Product Size : </td> 
 
      <td> 
 
      <100sq cm</td> 
 
     </tr> 
 
    
 
     <tr> 
 
      <td>Number of DFU patients :</td> 
 
      <td>10</td> 
 
     </tr> 
 
     <tr> 
 
      <td>Patient co-pay % (based on wage adj.rate) : </td> 
 
      <td>0.2</td> 
 
     </tr> 
 
     <tr> 
 
      <td>Co-Pay percent actuallly collected : </td> 
 
      <td><input id="copayPerc" type="number" value="0.75"></td> 
 
     </tr> 
 
    
 
     <tr> 
 
      <td><input type="button" id="clear" value="Clear" onclick="clearForm();"> 
 
    \t </td> 
 
      <td> 
 
      <input type="button" id="button" value="calculate" onclick="settingValue();"> 
 
      </td> 
 
     </tr> 
 
    
 
    </table> 
 
    
 
    
 
     <table border=1> 
 
     
 
    
 
     <tr> 
 
      <td>Medicare Payment :</td> 
 
      <td> 
 
      <input type="number" id="medipayment"> 
 
      </td> 
 
     </tr> 
 
    
 
    <tr> 
 
    \t <td>Sequestration Adjustment (-2%) : </td> 
 
    \t <td> <input type="number" id="adj"> </td> 
 
    </tr> 
 
    <tr> 
 
    \t <td>Medicare Payment Net of Seq. : </td> 
 
    \t <td> <input type="number" id="net"> </td> 
 
    </tr> 
 
    <tr> 
 
    \t <td>Projected Patient Co-Pay : </td> 
 
    \t <td> <input type="number" id="copay"> </td> 
 
    </tr> 
 
    
 
    <tr> 
 
    \t <td>Actual Co-Pay Amount Collected : </td> 
 
    \t <td> <input type="number" id="actualCopay"> </td> 
 
    </tr> 
 
    
 
    <tr> 
 
    \t <td>No. of applications per Episode : </td> 
 
    \t <td> <input type="number" id="applications" value="1"> </td> 
 
    </tr> 
 
    
 
    <tr> 
 
    \t <td>Product cost per treatment : </td> 
 
    \t <td> <input type="number" id="productCost" value="1125"> </td> 
 
    </tr> 
 
    
 
    <tr> 
 
    <td>Total product cost per episode : </td> 
 
    \t <td> <input type="number" id="totalProductCost"> </td> 
 
    </tr> 
 
    
 
    
 
    
 
     </table> 
 
    
 
    </form> 
 
    </body> 
 
    </html> 
 

+1

它看起來就像你有一個錯誤。對於變量和函數,您都使用相同的名稱'settingValue'。第一次運行是因爲函數在最後定義。但代碼運行並用變量值更改函數。只需重新命名變量或函數即可。 –

回答

2

var settingValue具有相同的名稱,function settingValue

只需重命名之一,應該工作:

var settingValue; 
 

 
    function clearForm() { 
 
    document.getElementById("myForm").reset(); 
 
    } 
 

 

 
    function funcSettingValue() { 
 
    var payment; 
 
    var copayPerc = document.getElementById("copayPerc").value; 
 
    settingValue = document.getElementById("Setting").value; 
 
    payment = medicarePaymentCal(settingValue); 
 
    document.getElementById("medipayment").value = payment; 
 
    document.getElementById("adj").value = seqAdjCal(payment); 
 
    document.getElementById("net").value = payment + seqAdjCal(payment); 
 

 
    document.getElementById("copay").value = payment * 0.2; 
 
    document.getElementById("actualCopay").value = payment * 0.2 * copayPerc; 
 
    totalProductCost(); 
 
    } 
 

 

 
    function medicarePaymentCal(value1) { 
 
    var result; 
 
    if (value1 == "Office") { 
 
     return 1411.21; 
 
    } else if (value1 = "HOPD") { 
 
     return 500; 
 
    } 
 
    } 
 

 
    function seqAdjCal(val) { 
 
    return -(0.02 * (0.8 * val)); 
 

 
    } 
 

 
    function totalProductCost() { 
 
    var applications = document.getElementById("applications").value; 
 
    var productCost = document.getElementById("productCost").value; 
 
    var total = applications * productCost; 
 
    document.getElementById("totalProductCost").value = total; 
 
    }
<html> 
 
<form method="post" id="myForm"> 
 
    <table border=1> 
 
    <tr> 
 
     <td>Setting :</td> 
 
     <td> 
 
     <select id="Setting"> 
 
      <option value="Office">Office</option> 
 
      <option value="HOPD">HOPD</option> 
 
     </select> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td>Facility :</td> 
 
     <td> 
 
     <select id="Facility"> 
 
      <option value="100015">Mount Sinai, 123 Main Street, New York</option> 
 
      <option value="100016">NYU Medical, 25 North Broadway, New York</option> 
 
     </select> 
 
     </td> 
 

 
     <tr> 
 
     <td>Product Size :</td> 
 
     <td> 
 
      <100sq cm</td> 
 
     </tr> 
 

 
     <tr> 
 
     <td>Number of DFU patients :</td> 
 
     <td>10</td> 
 
     </tr> 
 
     <tr> 
 
     <td>Patient co-pay % (based on wage adj.rate) :</td> 
 
     <td>0.2</td> 
 
     </tr> 
 
     <tr> 
 
     <td>Co-Pay percent actuallly collected :</td> 
 
     <td> 
 
      <input id="copayPerc" type="number" value="0.75"> 
 
     </td> 
 
     </tr> 
 

 
     <tr> 
 
     <td> 
 
      <input type="button" id="clear" value="Clear" onclick="clearForm();"> 
 
     </td> 
 
     <td> 
 
      <input type="button" id="button" value="calculate" onclick="funcSettingValue();"> 
 
     </td> 
 
     </tr> 
 

 
    </table> 
 

 

 
    <table border=1> 
 

 

 
    <tr> 
 
     <td>Medicare Payment :</td> 
 
     <td> 
 
     <input type="number" id="medipayment"> 
 
     </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td>Sequestration Adjustment (-2%) :</td> 
 
     <td> 
 
     <input type="number" id="adj"> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td>Medicare Payment Net of Seq. :</td> 
 
     <td> 
 
     <input type="number" id="net"> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td>Projected Patient Co-Pay :</td> 
 
     <td> 
 
     <input type="number" id="copay"> 
 
     </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td>Actual Co-Pay Amount Collected :</td> 
 
     <td> 
 
     <input type="number" id="actualCopay"> 
 
     </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td>No. of applications per Episode :</td> 
 
     <td> 
 
     <input type="number" id="applications" value="1"> 
 
     </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td>Product cost per treatment :</td> 
 
     <td> 
 
     <input type="number" id="productCost" value="1125"> 
 
     </td> 
 
    </tr> 
 

 
    <tr> 
 
     <td>Total product cost per episode :</td> 
 
     <td> 
 
     <input type="number" id="totalProductCost"> 
 
     </td> 
 
    </tr> 
 

 

 

 
    </table> 
 

 
</form> 
 

 
</html>

+1

也可以在設置變量settingValue的行之前添加'var'。這可以防止該變量具有全局範圍並且會破壞該函數。 –

+0

這是真的,看起來好像根本就不需要有這個全局變量 –