2
我想在用户输入值时动态地对表格行进行求和。由于行数可以改变我想用一个PHP循环来实现这一点。我有问题让环路正常工作。例如,如果有两个单独的行相加,只有最后一行将被求和。在PHP循环中表行总和
<script type="text/javascript">
var sumScoreF = function(a) {
var rowtotal = 0;
n = new Array();
for (i = 1; i <= 3; i++) {
if (parseInt(document.getElementById(a + i).value) > 0) {
n[i] = parseInt(document.getElementById(a + i).value);
rowtotal += n[i];
}
}
document.getElementById(a + 'total').value = rowtotal;
};
</script>
以下是单行和的例子。在输入值时总列继续相加。这是一个很好的效果,但没有必要。
<table>
<tr>
<td>col1</td>
<td>col2</td>
<td>col3</td>
<td>total</td>
</tr>
<tr>
<td>
<input name="p1g1" id="p1g1" type="text" value="" onChange="sumScoreF('p1g')" />
</td>
<td>
<input name="p1g2" id="p1g2" type="text" value="" onChange="sumScoreF('p1g')" />
</td>
<td>
<input name="p1g3" id="p1g3" type="text" value="" onChange="sumScoreF('p1g')" />
</td>
<td>
<input name="p1gtotal" id="p1gtotal" type="text" value="" />
</td>
</tr>
</table>
这里是我尝试循环使用PHP和JavaScript的额外的行。第一行不会总和,但第二行会。我认为问题是与JavaScript变量“m”在它直接到最后一行,但我不知道如何解决它。
<table>
<tr>
<td>col1</td>
<td>col2</td>
<td>col3</td>
<td>total</td>
</tr>
<?php for($j=1;$j<=3;$j++) { ?>
<script type="text/javascript">
var k = <?php echo json_encode($j); ?>;
var m = 'p'+k+'g';
</script>
<tr>
<td>
<input name="<?php echo 'p'.$j.'g1'; ?>" id="<?php echo 'p'.$j.'g1'; ?>" type="text" onChange="sumScoreF('m')" />
</td>
<td>
<input name="<?php echo 'p'.$j.'g2'; ?>" id="<?php echo 'p'.$j.'g2'; ?>" type="text" onChange="sumScoreF('m')" />
</td>
<td>
<input name="<?php echo 'p'.$j.'g3'; ?>" id="<?php echo 'p'.$j.'g3'; ?>" type="text" onChange="sumScoreF('m')" />
</td>
<td>
<input name="<?php echo 'p'.$j.'gtotal'; ?>" id="<?php echo 'p'.$j.'gtotal'; ?>" type="text" />
</td>
</tr>
<?php } ?>
任何帮助是极大的赞赏。谢谢。
这是做一个非常可怕的方式,但每次要覆盖'M'变量,你在PHP中循环,尝试将'$ j'附加到该变量的所有实例。否则,你的DOM绑定'onChange'调用不会将你想要传递到'sumScore'函数的正确变量作为目标 –
如果你想在用户输入中添加'
谢谢@scrowler。覆盖循环的每个迭代的m变量是有意的。当j是1时,m是p1g,p1gtotal应该(我认为!)显示第1行的总和。当我在第1行第1列中输入一个值时,p2gtotal立即在第2行列总数中显示一个零,第1行列总计不会当我在第2行输入一个值时,第2行开始正确合计,所以不会显示任何内容。它看起来像m变量直接到p2g并等待p2g值,并且p1g以某种方式被否定。我检查了m在循环中正确改变。 – MikeH
回答
使用PHP来呼应的onChange内循环变量javascript函数调用:
来源
2013-12-29 01:19:29 MikeH
..然后单击复选标记以将此答案标记为已接受。 – Daedalus
相关问题