我有以下功能在 Chrome 和 Firefox 中可以正常工作,但在 IE7 中不能。该函数应该在所选表中行的每个实例上运行。在 IE 7 中它只运行一次。
function rowTotalit(targee) {
var sum = 0;
var thisRow = targee.closest('tr');
thisRow.find('td.tmipt input').each(function() {
var numChk = $(this).val();
sum = sum + Number(numChk);
thisRow.find('.total').fadeOut(200, function() {
$(this).html(sum);
$(this).fadeIn(500);
$(this).val(sum);
});
thisRow.find('.total').next().val(sum);
});
}
这是另一个函数中的触发器:
for (trs = 1; trs <= tblerows; trs++) {
$("#testingmsg").append("ARGH!!" + trs);
rowTotalit($("#timeChart tr:nth-child(" + trs + ")"));
}
在 Chrome 和 Firefox 中testingmsg div 的输出是:
啊!!1啊!!2啊!!3啊!!4啊!!5啊!!6啊!!7
在 IE7 中是:
啊!!1啊!!2
所以输出告诉我函数到达函数中的每个语句并在 IE 中死掉。有人有想法么?
更新: 保存 for 循环的函数由按钮上的单击事件触发:
function addEmAllUp(){
var tblerows = ($('#timeChart tr').length - 2);
alert(tblerows);
for (trs = 1; trs <=tblerows; trs++){
$("#testingmsg").append("ARGH!!" + trs);
rowTotalit($("#timeChart tr:nth-child(" + trs +")"));
}
}
当我多次单击该按钮时,函数递增 1。所以我按了两次,它转到第二行,第三次让我进入第三行,依此类推。
这是表格行 HTML 的示例:
<tr class="timerow">
<td class='projName' >Holiday<br /><span class='small'>999906</span></td>
<td class="tmipt" align="center"><input type="text" class="numbersOnly alertME" name="999906[]" value="0.00" /></td>
<td class="tmipt" align="center"><input type="text" class="numbersOnly alertME" name="999906[]" value="0.00" /></td>
<td class="tmipt" align="center"><input type="text" class="numbersOnly " name="999906[]" value="0.00" /></td>
<td class="tmipt" align="center"><input type="text" class="numbersOnly " name="999906[]" value="0.00" /></td>
<td class="tmipt" align="center"><input type="text" class="numbersOnly " name="999906[]" value="0.00" /></td>
<td class="tmipt" align="center"><input type="text" class="numbersOnly " name="999906[]" value="0.00" /></td>
<td class="tmipt" align="center"><input type="text" class="numbersOnly " name="999906[]" value="0.00" /></td>
<td align="center"><div id="total_1" class="total">0.00</div><input type="hidden" name="total_999906" class="total" value="0.00" /></td>
</tr>