Foros del Web » Programando para Internet » Javascript »

crear funcion sobre inputs dinamicos

Estas en el tema de crear funcion sobre inputs dinamicos en el foro de Javascript en Foros del Web. Hola buenas, tengo un problemilla con una funcion de Sumar sobre unos inputs Text que se crean mediante un boton. El caso es que tengo ...
  #1 (permalink)  
Antiguo 09/06/2008, 02:05
 
Fecha de Ingreso: enero-2008
Mensajes: 37
Antigüedad: 16 años, 3 meses
Puntos: 0
crear funcion sobre inputs dinamicos

Hola buenas, tengo un problemilla con una funcion de Sumar sobre unos inputs Text que se crean mediante un boton.

El caso es que tengo unos campos que poniendo una cantidad, y mediante una funcion javascript se suman y el resultado aparece en otro campo.

Mi problema viene cuando he añadido un boton para crear mas campos por si el usuario quiere añadir mas cantidades.

1. No se como modificar el javascript de generar los campos de texto para que genere el ID que yo quiera de manera correlativa.
2. si consigo eso, como lo hago para que la funcion de sumar me sume los campos? ya que la que tengo hay que especificar los campos a sumar.

este es el codigo de la creacion de campos mediante un boton.

Código:
<!-- Funcion Javascript para crear filas con inputs dentro -->
<script language="javascript" type="text/javascript">
function insertarFila(){
  	var elmTBODY = document.getElementById('CuerpoTabla');
  	var elmTR;
  	var elmTD;
  	var elmTD2;
  	var elmText;
  	var elmText2;
	elmTR = document.createElement('tr');
	elmTD = document.createElement('<td width="140" height="27" class="texto-cuerpo10" background="archivos/fondoceldacar.jpg" style="border-right:dotted 1px #000000;">');
	elmTD2 = document.createElement('<td width="280" align="left" class="texto-cuerpo88" style="border-bottom:dotted 1px #000000; border-right:dotted 1px #000000; font-weight:bold;">');
	elmTD3 = document.createElement('<td width="280" align="left" class="texto-cuerpo88" style="border-bottom:dotted 1px #000000; border-right:dotted 1px #000000; font-weight:bold;">');
	elmTD4 = document.createElement('<td width="280" align="center" height="27" class="texto-cuerpo10" bgcolor="#FFFFFF">');
	elmText = document.createTextNode("\u00a0 \u00a0Mas Préstamos");
	elmText2 = document.createTextNode("\u00a0\u00a0\u00a0");
	elmText3 = document.createElement('<input name="e" onKeypress="LP_data();" onFocus="Sumar();" onBlur="NoSumar();" type="text" class="texto-cuerpo88" id="e" size="35" maxlength="100">');
	elmText6 = document.createTextNode("\u00a0€");
	elmText7 = document.createTextNode("\u00a0€");
	elmText4 = document.createTextNode("\u00a0\u00a0\u00a0");
	elmText5 = document.createElement('<input name="f" onKeypress="LP_data();" onFocus="Sumar();" onBlur="NoSumar();" type="text" class="texto-cuerpo88" id="f" size="35" maxlength="100">');
	elmTD.appendChild(elmText);
	elmTD2.appendChild(elmText2);
	elmTD2.appendChild(elmText3);
	elmTD2.appendChild(elmText6);
	elmTD3.appendChild(elmText4);
	elmTD3.appendChild(elmText5);
	elmTD3.appendChild(elmText7);
	elmTR.appendChild(elmTD);
	elmTR.appendChild(elmTD2);
	elmTR.appendChild(elmTD3);
	elmTR.appendChild(elmTD4);
    elmTBODY.insertBefore(elmTR,elmTBODY.childNodes[0])
}
</script>
y este el de suma

Código:
<script type="text/javascript">
function Sumar(){
      interval = setInterval("calcular()",1);
}
function calcular(){
      uno = document.caratulaform.carhipotecapendiente.value;
      dos = document.caratulaform.carprestamo1pendiente.value; 
	  tres = document.caratulaform.carprestamo2pendiente.value;
      document.caratulaform.cartotalpendiente.value = (uno * 1) + (dos * 1) + (tres * 1);
var redondeo=Math.round(document.caratulaform.cartotalpendiente.value*100)/100;
document.caratulaform.cartotalpendiente.value = redondeo;
}
function NoSumar(){
      clearInterval(interval);
}
</script>
Grácias.
  #2 (permalink)  
Antiguo 09/06/2008, 05:17
 
Fecha de Ingreso: enero-2008
Mensajes: 37
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: crear funcion sobre inputs dinamicos

Bueno al final he descubierto como hacerlo, cambiando la funcion de sumar por esta:
Código HTML:
<script language="javascript">

function sumar(){
  var a, total = 0;
  var elements = getElementsByClass('sumarcaratula');
  
   for(a=0; a<elements.length; a++){
          total += (parseFloat(elements[a].value));
   }
  
   document.getElementById("resultado").value = total;
}

</script> 
y creando con anterioridad la funcion getelementsbyclass que he encontrado, que creando un estilo especifico en css recoge los campos se llamen como se llamen y si creo nuevos campos con ese estilo se suman tambien asique ya está solucionado.
Código HTML:
<script language="javascript">
function getElementsByClass(searchClass,node,tag) {
       var classElements = new Array();
       if ( node == null )
               node = document;
       if ( tag == null )
               tag = '*';
       var els = node.getElementsByTagName(tag);
       var elsLen = els.length;
       var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
       for (i = 0, j = 0; i < elsLen; i++) {
               if ( pattern.test(els[i].className) ) {
                       classElements[j] = els[i];
                       j++;
               }
       }
       return classElements;
}
</script> 
Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:55.