使用增量ID从循环循环调用Javascript

问题描述:

我有这个php网站,我使用它的JavaScript。 一个页面中是一个条目的形式与10号线在进入数据 在这种情况下,一个行会以这种方式编码:使用增量ID从循环循环调用Javascript

echo "<td style='border-width: 0'><input type='text' id = 'price1' style = 'font-size: 10px' name='poline1[price]' size='7'></td>"; 

紧挨着此输入字段有一个按钮:

echo "<td style='border-width: 0'><a href = 'javascript:void(0)' onClick = 'copyRow1;' class='button6'>Copy Down</a></td>"; 

Javascript函数copyRow1如下:

<script type="text/javascript"> 
function copyRow1() { 
     document.fabricorder.price2.value = document.fabricorder.price1.value; 
    } 
</script> 

它复制输入值从输入框ID =价格1到输入框ID = price2。

我有10个Javascript函数这样 copyRow1(),copyRow2(),copyRow3(),等....

它工作正常,但我尝试优化所有的代码,使其更容易修改,现在我想循环我所有的线。

所以我想改变我行脚本,以这样的方式

for ($i = 1; $i <= 10; ++$i){ 
echo "<tr>"; 
echo "<td style='border-width: 0'><input type='text' id = 'price$i' style = 'font-size: 10px' name='poline[$i][price]' size='7'></td>"; 
echo "<td style='border-width: 0'><a href = 'javascript:void(0)' onClick = 'copyRow($i);' class='button6'>Copy Down</a></td>"; 
echo "</tr>"; 
} 

和我的功能是这样的:

<script type="text/javascript"> 
function copyRow(i) { 
     document.fabricorder.price(i+1).value = document.fabricorder.price(i).value; 
    } 
</script>   

可惜,这是行不通的。我究竟做错了什么?

+3

请定义“这不起作用”。 – Teemu 2014-09-22 15:35:25

+0

在表达式'document.fabricorder.price(i + 1).value'中,'document.fabricorder.price'将被视为一个函数并被调用(“不工作”)。 – 2014-09-22 15:41:40

+0

Teemu,基本上这不会复制第1行的任何数据到第2行。 – 2014-09-22 16:35:03

尝试修改您的copyRow功能:

function copyRow(i) { 
     for (var j=i,numRows=document.fabricorder.length;j<numRows;j++) { 
      document.fabricorder["price"+(j+1)].value = document.fabricorder["price"+(j+1)].value; 
     } 
} 

你需要遍历所有输入字段,复制每个值下。没有看到100%的代码就很难给你100%的工作代码。你可以把它放在JSFiddle中吗?

+0

请告诉OP他们为什么要“尝试”。 – 2014-09-22 15:40:27

+0

即使没有尝试我有一个预感'document.fabricorder.price(j + 1)'会抛出一个错误。 – 2014-09-22 15:43:12

+0

如果你有jQuery更好的方式可能是循环和选择每个输入像这样:'$(“#price”+ i).val()' – Scott 2014-09-22 15:48:20