Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/06/2012, 07:15
Luis_v
 
Fecha de Ingreso: abril-2006
Mensajes: 27
Antigüedad: 18 años, 7 meses
Puntos: 6
Respuesta: Extraer valores de campos creados dinámicamente

El esquema general de la idea yo lo veo bastante bien hecho. Pocas cosas cambiaria. Mas adelante te las señalo.

En cuanto a la pregunta principal, el como obtener el importe total, deberia ser facil puesto que cada select y cada casilla de cantidad tienen nombre unico.

Importe Parcial = precio articulo (select.value) + numero articulos (casilla.value)
Importe Total = suma Importes Parciales

En codigo:
Código:
importe = 0;
for (int n=1; n<=num; n++) {
  var objArticulo = document.getElementsByName('selector'+n)[0];
  var objCantidad = document.getElementsByName('casilla'+n)[0];

  importe += objArticulo.value * objCantidad.value;
}
Ten en cuenta, que para que el anterior enfoque sea valido, la variable global "num" actua como contador de articulos, asi que al igual que lo incrementas cuando añades una compra, tienes que decrementarlo cuando la eliminas.


Cosas a cambiar.

Acostumbrate, como norma general, a declarar en su primer uso las variables con la palabra reservada "var". Asi limitas su ambito a aquel en que la declaras, de otro modo su ambito sera global.

A la funcion "crear" le declaras un parametro "obj", que luego no usas para nada. Eliminalo.

En la funcion "borrar" declaras un parametro "obj, pero luego no lo usas adecuadamente. Le pasas el nombre del boton pero luego tratar de obtener el elemento a borrar por id. Creo que te complicas la vida. Tu quieres borrar el div contenedor, pues pasale directamente una referencia a ese contenedor.
Código:
ele.onclick = function () {borrar(contenedor)}
Su codigo prodria quedar asi.
Código:
function borrar(obj) {
  fi = document.getElementById('fiel');
  fi.removeChild(obj);
  numm--;
}
Las opciones de los select son las mismas para todos. No necesitas crear los arrays "arraytextos", y "arrayvalores" en cada llamada a la funcion "crear". Saca su construccion fuera del cuerpo de la funcion.


Quizas en lugar de usar dos arrays, uno para textos y otro para valores, usaria un unico array articulos, y cada articulo tendria las propiedades texto y valor.