[英]Javascript onclick event not firing in Firefox
I've got a function that works when called in IE and Chrome, but it doesn't work in Firefox.. at all. 我有一个可以在IE和Chrome中调用的函数,但是在Firefox中根本不起作用。 Here's the function: 功能如下:
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 = '';
} }
And the HTML: 和HTML:
<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>
Is there any reason why this shouldn't work in Firefox? 有什么原因不能在Firefox中正常工作? Using Firebug I can see that it is telling me that conBalance is undefined when it is defined. 使用Firebug,我可以看到它告诉我conBalance在定义时是未定义的。
Any ideas? 有任何想法吗? I appreciate any help you can provide. 感谢您提供的任何帮助。
Firefox doesn't support the innerText property, which was non–standard until HTML5. Firefox不支持innerText属性,该属性在HTML5之前是非标准的。 Instead it supports the textContent property, which was standardised about 8 years ago. 相反,它支持大约8年前标准化的textContent属性。 So where you have code like: 所以你有这样的代码:
document.getElementById('conBalance').innerText = totaldebt.toFixed(2);
the simple fix is to set the innerHTML property instead. 简单的解决方法是改为设置innerHTML属性。
Alternatively you can have a setText function like: 另外,您可以使用setText函数,例如:
function setText(el, text) {
if (typeof el.textContent == 'string') {
el.textContent = value;
} else if (typeof el.innerText == 'string') {
el.innerText = value;
}
}
then call it like: 然后这样称呼:
setText(document.getElementById('conBalance'), totaldebt.toFixed(2));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.