Cita:
Iniciado por sergiolimo. No doy pie con bola con esto, estoy intentando algo asi (lo modifique un poco para presentarlo limpio pero la idea es esta):
function calcula(i)
{
valor = document.getElementById('descuento['+I+']').value;
cantidad = document.getElementById('cantidad['+I+']').value;
precio = document.getElementById('precio['+I+']').value;
total = (cantidad * precio) - (valor * (cantidad * precio) / 100);
document.getElementById('titulo['+I+']').value = total;
}
...
<? for ($x=0; $x<$valorx; $x++) { ?>
<input type="text" name="cantidad[]" id="cantidad[]" value="<? echo $cantidad[$l]; ?>" size="8" maxlength="8" />
<input type="text" name="descuento[]" id="descuento[]" value="" onclick="calcula('.$l.')" size="8" maxlength="8" />
<input type="text" name="precio[]" id="precio[]" value="<? echo $precio[$l]; ?>" size="8" maxlength="8" />
<input type="text" name="total[]" id="total[]" value="" size="8" maxlength="8" />
<? ...
} ?>
como ven el js no es mi fuerte, tengo todo en php y solo necesito ese calculo para editar en vivo, estuve viendo en varios lugares y vi que hay muchas formas radicalmente diferentes de mostrar lo mismo pero aun no entiendo como hacer que funcione...
Primero sería bueno que nos muestres como te quedó el html generado tras hacer lo que te indicaron previamente (abrís la página en el navegador y ves el código fuente.
Ahora yendo a tu función js se detectan varios errores, fijate
calcula() recibe un parámetro
i --> calcula(i)
Sin embargo luego hacés
valor = document.getElementById('descuento['+I+']').value;
y está recibiendo I (en mayúsculas), te recuerdo que js es "case sensitive", diferencia may de minusc.
Por otro lado los id deben ser únicos, asi que eso de utilizar los corchetes para construir el id está mal (sería para name en todo caso)
Pero insisto, hay que ver como te quedó el html generado
Saludos