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の出力は次のとおりです。
ARGH!!1ARGH!!2ARGH!!3ARGH!!4ARGH!!5ARGH!!6ARGH!!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 +")"));
}
}
ボタンを 2 回以上クリックすると、関数は 1 ずつ増加します。つまり、2 回押すと 2 行目に移動し、3 回目で 3 行目に移動します。
テーブル行の 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>