PHP循环中的表行总和

时间:2013-12-20 01:07:30

标签: javascript 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 } ?>

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

使用PHP来回显onChange javascript函数调用中的循环变量:

<table>
  <tr>
    <td>col1</td>
    <td>col2</td>
    <td>col3</td>
    <td>total</td>
    </tr>
    <?php for($j=1;$j<=3;$j++) { ?>
  <tr>
    <td>
      <input name="<?php echo 'p'.$j.'g1'; ?>" id="<?php echo 'p'.$j.'g1'; ?>" type="text" onChange="sumScoreF('<?php echo 'p'.$j.'g'; ?>')" />
  </td>
  <td>
    <input name="<?php echo 'p'.$j.'g2'; ?>" id="<?php echo 'p'.$j.'g2'; ?>" type="text" onChange="sumScoreF('<?php echo 'p'.$j.'g'; ?>')" />
  </td>
  <td>
    <input name="<?php echo 'p'.$j.'g3'; ?>" id="<?php echo 'p'.$j.'g3'; ?>" type="text" onChange="sumScoreF('<?php echo 'p'.$j.'g'; ?>')" />
  </td>
  <td>
    <input name="<?php echo 'p'.$j.'gtotal'; ?>" id="<?php echo 'p'.$j.'gtotal'; ?>" type="text" />
  </td>
</tr>
<?php } ?>