2017-07-15 90 views
-1

我在Chrome中使用下面的脚本时遇到问题。 (它在Firefox和IE中都能很好地工作。)除了calcTotal函数外,一切都可以工作,但我无法弄清楚原因。 **我添加了我用来获取变量的表格,如果这有助于澄清事情。 **部分Javascript无法在Chrome中工作

<script type="text/javascript"> 
     function calcWages(){ 
      document.getElementById('wagestotal').innerHTML = ''; 
      var hours = new Number(document.getElementById('hours').value); 
    var rate = new Number(document.getElementById('rate').value); 
      document.getElementById('wagestotal').innerHTML = ((hours * rate).toFixed(2)); 
      document.getElementById('wagestotal').value = ((hours * rate).toFixed(2)); 

     } 

     function calcMilage(){ 
      document.getElementById('milagetotal').innerHTML = ''; 
      var miles = new Number(document.getElementById('miles').value); 
    document.getElementById('milagetotal').innerHTML = ((miles * .535).toFixed(2)); 
    document.getElementById('milagetotal').value = ((miles * .535).toFixed(2)); 
       } 


     function calcTotal(){ 
      document.getElementById('total').innerHTML = ''; 
     var wages = new Number(document.getElementById('wagestotal').innerHTML); 
     var milage = new Number(document.getElementById('milagetotal').innerHTML); 
     var travel = new Number(document.getElementById('travel').value); 
     var lodging = new Number(document.getElementById('lodging').value); 
     var food = new Number(document.getElementById('food').value); 
     var office = new Number(document.getElementById('office').value); 
     var other = new Number(document.getElementById('other').value); 
document.getElementById('total').value = ((wages + milage + travel + lodging + food + office + other).toFixed(2)); 
} 


     </script> 



Items for Reimbursement:<br/> 
<Table> 
<tr> 
    <td>Wages:</td> 
    <td>Hours:(8 a day Max)<input type="text" name="hours" id="hours" size="4" maxlength="3" onchange="calcWages(); calcTotal()"></td> 
    <td>Rate:<input type="text" name="rate" id="rate" size="3" maxlength="5" onchange="calcWages(); calcTotal()"></td> 
    <td>=</td> 
    <td><input readonly name="wagestotal" id="wagestotal" size="6" maxlength="7"/></td> 
</tr> 
<tr> 
    <td>Mileage:</td> 
    <td>Miles<input type="text" name="miles" id="miles" size="4" maxlength="4" onchange="calcMilage(); calcTotal()"></td> 
    <td>IRS rate ($0.535)</td> 
    <td>=</td> 
    <td><input readonly name="milagetotal" id="milagetotal" size="6" maxlength="7"/></td> 
</tr> 
<tr> 
    <td>Travel:</td> 
    <td colspan="2"><input type="text" name="travelitem" id="travelitem" size="36"></td> 
    <td>=</td> 
    <td><input type="text" name="travel" id="travel" size="6" maxlength="7" onchange="calcTotal()"> </td> 
</tr> 
<tr> 
    <td>Lodging:</td> 
    <td colspan="2"><input type="text" name="lodgingitem" id="lodgingitem" size="36"> </td> 
    <td>=</td> 
    <td><input type="text" name="lodging" id="lodging" size="6" maxlength="7" onchange="calcTotal()"></td> 
</tr> 
<tr> 
    <td>Food:</td> 
    <td colspan="2"><input type="text" name="fooditem" id="fooditem" size="36"> </td> 
    <td>=</td> 
    <td><input type="text" name="food" id="food" size="6" maxlength="7" onchange="calcTotal()"></td> 
<tr> 
    <td>Office Supplies:</td> 
    <td colspan="2"><input type="text" name="officeitem" id="officeitem" size="36"> </td> 
    <td>=</td> 
    <td><input type="text" name="office" id="office" size="6" maxlength="7" onchange="calcTotal()"></td> 
</tr> 
<tr> 
    <td>Other:</td> 
    <td colspan="2"><input type="text" name="otheritem" id="otheritem" size="36"></td> 
    <td>=</td> 
    <td><input type="text" name="other" id="other" size="6" maxlength="7" onchange="calcTotal()"></td> 
</tr> 
<tr> 
    <td></td> 
    <td></td> 
    <td>Grand Total:</td> 
    <td>=</td> 
    <td><input readonly name="total" id="total" size="6" maxlength="9"/></td> 
</tr> 
</table> 
+0

你为什么用innerHtml和旅行数据获得工资与价值?什么HTML控件拥有这些值? –

+0

**您的示例既不简单也不完整,也不可验证**。请参阅[帮助中心了解如何提出问题](https://stackoverflow.com/help/mcve)。你也可能想解释为什么你要在所有地方使用包装器对象而不是原始数字。 – phihag

+0

对不起,任何奇怪的编码。我是JavaScript新手,并且自学成才。 – Type540

回答

0

尝试使用

+document.getElementById('wagestotal').innerHTML 

,而不是

new Number(document.getElementById('wagestotal').innerHTML) 

或只使用

Number(document.getElementById('wagestotal').innerHTML) 
在你值的情况下

 var wages = Number(document.getElementById('wagestotal').innerHTML); 
     var milage = Number(document.getElementById('milagetotal').innerHTML); 
     var travel = Number(document.getElementById('travel').value); 
     var lodging = Number(document.getElementById('lodging').value); 
     var food = Number(document.getElementById('food').value); 
     var office = Number(document.getElementById('office').value); 
     var other = Number(document.getElementById('other').value); 

     document.getElementById('total').value = new Number(wages + milage + travel + lodging + food + office + other).toFixed(2);