0

我正在开发一个项目,该项目将使用循环将许多表单添加到 mysql 数据库中。在 javascript 部分中,我无法让 var i 在函数 updatesum() 中工作。有人可以帮我吗?

我试图避免这样做:

document.form1.total.value = (document.form1.number1.value -0) + (document.form1.number2.value -0);
document.form2.total.value = (document.form2.number1.value -0) + (document.form2.number2.value -0);
...........
document.form48.total.value = (document.form48.number1.value -0) + (document.form48.number2.value -0);
document.form49.total.value = (document.form49.number1.value -0) + (document.form49.number2.value -0);

将需要进行大约 12 项其他计算。

任何帮助,将不胜感激。

<html>
<head>
<script type="text/javascript"><!--
function updatesum() {

for(var i=0; i < 50; i++)
        { 
    document.form[i].total.value = (document.form[i].number1.value -0) + (document.form[i].number2.value -0);
            }
        }
    //-->
</script>
</head>

<body>
<table border="1">
    <tr>
        <td>#</td>
        <td>NUMBER</td>
    </tr>
<? 
$x=1;



while($x <= 50) 
    { ?>
        <tr>
            <td>
                <? echo $x; ?>
            </td>
            <td>
                <form name="form<? echo $x;?>" >
                    <table border="1">
                        <tr>
                            <td>NUMBER1</td>
                            <td>NUMBER2</td>
                            <td>TOTAL</td>
                        </tr>
                        <tr>
                            <td><input name="number1" size="2" onChange="updatesum()" /></td>
                            <td><input name="number2" size="2" onChange="updatesum()" /></td>
                            <td><input name="total"  size="3" readonly style="border:0px;"></td>
                        </tr>
                    </table>
                </form>
            </td>
        </tr>

    <? $x++; } ?>
</table>



</body>
</html>
4

3 回答 3

0

你不能像那样在表单中拥有函数。我建议在循环外定义函数并在循环内调用它:

演示在这里

function updatesum() {
    var forms = document.getElementsByTagName("form");
    for (var v = 0; v < 50; v++) {
         var input = forms[v].getElementsByTagName("input");
        input[2].value = eval(input[0].value) + eval(input[1].value);
    }
}

如果您使用该代码解释您想要什么,我们可以为您提供更多帮助。在您的 html 中,您也调用了该函数,我无法预测您期望它做什么......

于 2013-07-12T23:50:57.213 回答
0

在您的循环中,您正在定义一个函数。这与调用/调用函数不同。

尝试

<script type="text/javascript"><!--

function updatesum() {
   document.form[i].total.value = (document.form[i].number1.value -0) + (document.form[i].number2.value -0);
}

for(var i=0; i < 50; i++) {
   updatesum();
}

//-->
</script>
于 2013-07-12T23:46:55.647 回答
0

每次循环运行时,您都在定义函数。您要做的是首先在循环之外定义您的函数。然后在每次循环迭代中调用它。您还需要将索引(即 i)传递给函数。

像这样:

<script type="text/javascript">

    function updatesum(i) {
        document.form[i].total.value = (document.form[i].number1.value -0) + (document.form[i].number2.value -0);
    }

    for(var i=0; i < 50; i++) {
            updatesum(i); 
    }

</script>

让我们知道它是如何为您工作的。

于 2013-07-13T00:03:52.913 回答