0

これは私が持っている命名コードです:

    <?php
    for ($i=1; $i<=$housingcount; $i++){
      echo '<input onchange="myFunction(value)" size="',11,'" type="text" name="cavqty',$i,'" id="hous',$i,'"/>';}
    ?>

は、単に$housingcountデータベースからクエリされた行数です ( $housingcount=mysql_num_rows($result))。

myFunction は単純な合計関数であるため、この質問のコンテキストではそれほど重要ではありませんが、とにかく次のようになります。

    <script>
    function myFunction(tBox)
    {
    var sum=0;
    var elts = document.getElementsByTagName('input');
    for (var i=0; i<elts.length; i++) {
      var elt=elts[i];
        if ( elt.id && elt.id.indexOf('hous')===0 sum += Number(elt.value);
    document.getElementById('sum').innerText=sum;
    }
    </script>

したがって、php コードに基づいて、この場合、ハウジングの数に基づいてテキスト ボックスの数が変わります。したがって、テキスト ボックスは動的に名前が付けられます (cavqty1、cavqty2、cavqty3、...)。その結果、ループが繰り返されます。テキスト ボックス名を別の関数に使用するためにどのように名前を付ければよいかわからないため、この命名方法は私に多くの問題を引き起こしました。

調査の結果、それらを配列に強制し、 foreach ステートメントを使用して個々の行を 1 つずつ調べる必要があると考えましたが、うまくいきませんでした。悲しいかな、私はこの動的な命名全体に非常に困惑しています。

私の質問は、動的に名前が付けられたテキスト ボックスをどのように呼び出して、他の関数で使用できるようにするかということです。

4

1 に答える 1

0

試す:

<?php
for ($i=1; $i<=$housingcount; $i++){
    echo '<input onchange="myFunction(value)" size="',11,'" type="text" name="cavqty[]" id="hous',$i,'"/>';
}
?>

次に、反対側で次を使用できます。

if(isset($_POST["cavqty"])){
    foreach($_POST["cavqty"] as $cavqty){
        echo $cavqty;
    }
}

または単に:$_POST["cavqty"][0]特定の値の場合。

于 2013-08-05T13:09:59.793 に答える