これは私が持っている命名コードです:
<?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 つずつ調べる必要があると考えましたが、うまくいきませんでした。悲しいかな、私はこの動的な命名全体に非常に困惑しています。
私の質問は、動的に名前が付けられたテキスト ボックスをどのように呼び出して、他の関数で使用できるようにするかということです。