这是我的命名代码:
<?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,cawqty3,…),这是循环进行迭代的结果。现在这种命名方法给我带来了很多麻烦,因为我不知道如何调用文本框名称,以便将它们用于另一个函数。
经过研究,我认为我必须将它们强制成一个数组,并使用foreach语句逐个查看每一行,但这并没有奏效。唉,我被这整个动态命名的事情难住了。
我的问题是:如何调用动态命名的文本框,以便在其他函数中使用它们?
尝试:
<?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]
表示特定值。