将旧javascript代码修改为新代码

将旧javascript代码修改为新代码,javascript,jquery,Javascript,Jquery,旧的html和javascript代码: <tr> <input id="pret_id_1" type="text" name="pret" /> <input id="val_id_1" type="text" name="val"/> <input id="val_tva_id_1" type="text" name="val_tva"/> <input id="cant_id_1" type="text" name="cant

旧的html和javascript代码:

<tr>
 <input id="pret_id_1" type="text" name="pret" />
 <input id="val_id_1" type="text" name="val"/>
 <input id="val_tva_id_1" type="text" name="val_tva"/>
 <input id="cant_id_1" type="text" name="cant" />
</tr>

<script>
  var x=document.form_factura;
  x.val.value = (x.pret.value * x.cant.value).toFixed(2) ;
  x.val_tva.value = ((x.pret.value * x.cant.value) * tva_val).toFixed(2);       

  if(!/^[a-z()+ A-Z()-]*$/.test(x.val_tva.value)){        
    var suma = (x.pret.value * x.cant.value)- (-x.val_tva.value);
  } else { 
    var suma = (x.pret.value * x.cant.value);
  }       
  x.suma.value = suma.toFixed(2);
  ...
</script>

var x=文件、表格和事实;
x、 val.value=(x.pret.value*x.cant.value).toFixed(2);
x、 val_tva.value=((x.pret.value*x.cant.value)*tva_val.toFixed(2);
如果(!/^[a-z()+a-z()-]*$/.test(x.val_tva.value)){
var suma=(x.pret.value*x.cant.value)-(x.val\u tva.value);
}否则{
var suma=(x.pret.value*x.cant.value);
}       
x、 suma.value=suma.toFixed(2);
...
我试着把这个乘以。。我在name元素中添加了数组

<tr class="row1">
 <input id="pret_id_1" type="text" name="pret[]" />
 <input id="val_id_1" type="text" name="val[]"/>
 <input id="val_tva_id_1" type="text" name="val_tva[]"/>
 <input id="cant_id_1" type="text" name="cant[]" />
</tr>
<tr class="row2">
 <input id="pret_id_2" type="text" name="pret[]" />
 <input id="val_id_2" type="text" name="val[]"/>
 <input id="val_tva_id_2" type="text" name="val_tva[]"/>
 <input id="cant_id_1" type="text" name="cant[]" />
</tr>

如何更新数组输入名称元素的javascript代码

如果只有一行(.row1),javascript将无法工作。。必须至少有2个同名元素

编辑:我忘了提到我使用php和mysql存储数据。


谢谢。

首先,您不应在字段名称中添加
[]

<tr class="row1">
 <input id="pret_id_1" type="text" name="pret" />
 <input id="val_id_1" type="text" name="val"/>
 <input id="val_tva_id_1" type="text" name="val_tva"/>
 <input id="cant_id_1" type="text" name="cant" />
</tr>
<tr class="row2">
 <input id="pret_id_2" type="text" name="pret" />
 <input id="val_id_2" type="text" name="val"/>
 <input id="val_tva_id_2" type="text" name="val_tva"/>
 <input id="cant_id_1" type="text" name="cant" />
</tr>

嗯,你有唯一的ID,所以你可以循环

for(var i=1;i<=2;i++) {
    var pret = document.getElementById("pret_id_" + i );
    var cant = document.getElementById("cant_id_" + i );
    var val = document.getElementById("val_id_" + i ); 
    val.value = (pret.value * cant.value).toFixed(2) ;
}

for(var i=1;很遗憾,一些服务器端框架需要[]。是的,我认为这是可行的。谢谢。但是使用php如何处理post变量:$\u post['pret']…我忘了提到我使用php和mysql来存储数据。
for(var i=1;i<=2;i++) {
    var pret = document.getElementById("pret_id_" + i );
    var cant = document.getElementById("cant_id_" + i );
    var val = document.getElementById("val_id_" + i ); 
    val.value = (pret.value * cant.value).toFixed(2) ;
}
var pretElems = document.form_factura["pret[]"];
var cantElems = document.form_factura["cant[]"];
var valElems = document.form_factura["val[]"]]; 


for(var i=1;i<=2;i++) {
    var pret = pretElems[i];
    var cant = cantElems[i];
    var val = valElems[i]; 
    val.value = (pret.value * cant.value).toFixed(2) ;
}