2012-04-03 24 views
2

我有一个在IE和Chrome中调用时可用的函数,但它在Firefox中不起作用。有Javascript onclick事件没有在Firefox中触发

<table> 
    <thead> 

      <td scope="col">Balance remaining</td> 
      <td scope="col">Interest rate</td> 
      <td scope="col">Monthly payment</td> 
    </thead> 

    <tbody> 
<tr> 
      <td><input size=3 type=text id="balance1"></td> 
      <td><input size=1 type=text id="rate1"></td> 
      <td><input size=3 type=text id="monthly1"></td> 
     </tr> 
     <tr> 
      <td><input size=3 type=text id="balance2"></td> 
      <td><input size=1 type=text id="rate2"></td> 
      <td><input size=3 type=text id="monthly2"></td> 
     </tr> 
     <tr> 
      <td><input size=3 type=text id="balance3"></td> 
      <td><input size=1 type=text id="rate3"></td> 
      <td><input size=3 type=text id="monthly3"></td> 
     </tr> 
     <tr> 
      <td><input size=3 type=text id="balance4"></td> 
      <td><input size=1 type=text id="rate4"></td> 
      <td><input size=3 type=text id="monthly4"></td> 
     </tr> 
     <tr> 
      <td><input size=3 type=text id="balance5"></td> 
      <td><input size=1 type=text id="rate5"></td> 
      <td><input size=3 type=text id="monthly5"></td> 
     </tr> 
     <tr> 
      <td><input size=3 type=text id="balance6"></td> 
      <td><input size=1 type=text id="rate6"></td> 
      <td><input size=3 type=text id="monthly6"></td> 
     </tr> 
     <tr> 
     <td colspan="4"><input type=button class="button" value="Calculate" onclick="calcDebt();"></td> 
     </tr> 
     <tr class="con"> 
     <td colspan="4">Results</td> 
     </tr> 
     <tr> 
     <td colspan="1">Total debt:</td> 
     <td class="results" colspan="3"><label id="totalDebt">0</label></td> 
     </tr> 
     <tr> 
     <td colspan="1">Debt free in:</td> 
     <td class="results"><label id="totalMonths">0</label> months</td> 
     </tr> 
     <tr> 
     <td colspan="1">Total repayment:</td> 
     <td class="results" colspan="3">£<label id="totalRepayment">0</label></td> 
     </tr> 

任何理由为什么这应该不是工作在Firefox:这里的功能:

function calcDebt(){ 
var totaldebt=0; 
var curBalance=0; 
var totRepay =0; 
var totMonths=0; 
var curMonthAmount=0; 
var curRate=0; 
for($i=1;$i<=6; $i++){ 
    curBalance = document.getElementById('balance'+$i).value; 
    curRate = document.getElementById('rate'+$i).value; 
    curMonthAmount=document.getElementById('monthly'+$i).value; 
    if(curBalance>0 && curMonthAmount>0 && curRate>0){ 
     var remainingBalance=curBalance; 
     var mRate=(curRate/100)/12; 
     var months=0; 
     var payment=curBalance*(mRate)/(1-Math.pow((1+mRate),(0))); 
     payment=Math.round(payment*100)/100; 
     while (remainingBalance>0) 
     { 
      months++; 
      remainingBalance=remainingBalance*(1 + mRate)-curMonthAmount; 
     } 
     totRepay = totRepay+(curMonthAmount*months); 
     totMonths += months; 
     totaldebt += (curBalance*1); 
    } 
} 
document.getElementById('totalDebt').innerText = totaldebt.toFixed(2); 
document.getElementById('conBalance').innerText = totaldebt.toFixed(2); 
document.getElementById('totalMonths').innerText = totMonths; 
document.getElementById('totalRepayment').innerText = totRepay.toFixed(2); 

document.getElementById('finalMonthly').value = ''; 
    document.getElementById('finalTerm').value = ''; 
    document.getElementById('finalPayment').value = ''; 

}

和HTML?使用Firebug我可以看到它告诉我conBalance在定义时未定义。

任何想法?我感谢您提供的任何帮助。

+0

我也应该注意到,conBalance在下面显示HTML代码如下所示: \t \t 总债务: \t \t £<标签ID = “conBalance”> 0 \t \t – Ian 2012-04-03 08:12:21

+0

我没有看到一个称为conBalance在您的代码段中定义(或使用)变量? – 2012-04-03 08:43:18

回答

0

Firefox不支持innerText属性,它在HTML5之前是非标准的。相反,它支持textContent属性,该属性在8年前已经标准化。所以你有这样的代码:

document.getElementById('conBalance').innerText = totaldebt.toFixed(2); 

简单的修复就是改为设置innerHTML属性。

或者你可以有一个的setText功能,如:

function setText(el, text) { 
    if (typeof el.textContent == 'string') { 
    el.textContent = value; 
    } else if (typeof el.innerText == 'string') { 
    el.innerText = value; 
    } 
} 

然后调用它:

setText(document.getElementById('conBalance'), totaldebt.toFixed(2)); 
+0

这就是我想要的,Rob。谢谢! – Ian 2012-04-04 12:13:33