Muchas gracias a ambos por sus respuestas. Pero creo que no me he explicado bien.
De una base de datos tomo una lista de montos que pongo a disposición para editarlos, de esta forma
Cita: <%
Temp="Select * From Montos Order By Codigo"
Tabla1.Open Temp, Conexion
arrDBData = Tabla1.GetRows()
Tabla1.Close
iRecFirst = LBound(arrDBData 2)
iRecLast = UBound(arrDBData, 2)
For K = iRecFirst To iRecLast
%>
<input type="text" name="monto<%= arrDBData(0,K)%>" value="<%= arrDBData(3,K) %>" onChange="editar(<%= arrDBData(0,K)%>);">
<input type="hidden" name="original<%= arrDBData(0,K)%>" value="<%= arrDBData(3,K) %>">
<%
Next
%>
De esta forma, si vemos el código HTML resultante veremos algo así:
Cita: <input type="text" name="monto1" value="654654" onChange="editar(1);">
<input type="hidden" name="monto1" value="654654">
<input type="text" name="monto2" value="98461" onChange="editar(2);">
<input type="hidden" name="original2" value="98461" onChange="editar(2);">
<input type="text" name="monto3" value="3241684" onChange="editar(3);">
<input type="hidden" name="original3" value="3241684">
......
<input type"text" name="monto10" value="98416251" onChange="editar(10);">
<input type"hidden" name="original10" value="98416251">
El dato arrDBData(0,K) es el que corresponde al ID del registro.
Entonces la función que tengo para "capturar" el monto, tanto original como el nuevo, es el siguiente:
Cita: function editar(id)
{
tempMontoOriginal="original"+id;
tempMontoNuevo="monto"+id;
if(confirm("El monto ha sido modificado. ¿Desea hacer permamente este cambio?."))
{
montoOriginal=document.getElementById(tempMontoOri ginal).value;
montoNuevo=document.getElementById(tempMontoNuevo) .value;
//Aquí va el resto del código que hace uso de los nuevos datos
}
else
{
alert("Proceso cancelado por el usuario.");
//AQUÍ ES EL PROBLEMA
}
}
Entonces la idea es que cuando el usuario "cancele" el proceso, automáticamente se restablezca el valor original, que lo tengo en la variable montoOriginal. Pero...... como ven, el nombre del campo no es fijo sino dinámico o secuencial (como gusten llamarlo).
Por supuesto que probé pasar el nombre del campo de esta forma
Cita: onChange="editar(<%= arrDBData(0,K)%>,'monto<%= arrDBData(0,K)%>')
pero al querer utilizarlo, sigo con el problema de no poder incluirlo en el clásico "document.nombredelformulario.nombredelcampo.value "
Cita: function editar(id, nombre)
{
....
else
{
alert.......
document.form.nombre.value=montoOriginal;
}
}
Si pudiera hacer que
nombre fuera el nombre real del campo editado sería genial. Pero la instrucción buscará un campo precisamente de nombre = nombre (obvio).
Estuve buscando algo similiar a un setElementById pero para sorpresa mía (en verdad pensé que habría una función inversa al getElementById) no hay.
Y ese es mi problema.
Espero haberme explicado mejor.
Me disculpo por no haber sido claro anteriormente.
Mil gracias
Un saludo desde Lima, Perú