Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] problema con argumentos y un acumulador en elementos dom

Estas en el tema de problema con argumentos y un acumulador en elementos dom en el foro de Javascript en Foros del Web. Hace 3 días creé un tema sobre un problema al asignar una acción a un elemento creado por dom ( http://www.forosdelweb.com/f13/llamar-funcion-con-onkeyup-input-creado-con-dom-1074289/ ) y ahora tengo ...
  #1 (permalink)  
Antiguo 23/09/2013, 15:38
Avatar de asp95  
Fecha de Ingreso: septiembre-2013
Ubicación: Buenos Aires
Mensajes: 9
Antigüedad: 10 años, 7 meses
Puntos: 0
problema con argumentos y un acumulador en elementos dom

Hace 3 días creé un tema sobre un problema al asignar una acción a un elemento creado por dom ( http://www.forosdelweb.com/f13/llamar-funcion-con-onkeyup-input-creado-con-dom-1074289/ ) y ahora tengo otro problema con el mismo codigo.

Código HTML:
<div id='con'></div>
<div onclick='construir()'>Nuevo elemento</div> 
Código Javascript:
Ver original
  1. function tecla(tmp){
  2.     console.log(tmp);
  3. }
  4. var z;
  5. function construir(){
  6.     z +=1;
  7.     var a = document.createElement('input');
  8.     a.type = 'text';
  9.     a.onkeyup = function(){ tecla(z);};
  10.     document.getElementById('con').appendChild(a);
  11. }

El propósito es que cuando yo presione una tecla en los input creados, este llame a una función enviando el numero correspondiente al input (si se escribió desde el primer input, 1. si se lo hizo del segundo, 2. y así.).

Ahora el problema es que z, en cualquier input, tiene el valor del ultimo input creado, y se va cambiando dinamicamente. o sea, todos las llamadas, de cualquier input, envían el numero del total de inputs.

Gracias y disculpen por la insistencia del código, pero desde que solucioné el otro problema estoy buscándole la solución a este y no se la encuentro.

Última edición por asp95; 23/09/2013 a las 15:43 Razón: arreglar el onkeyup
  #2 (permalink)  
Antiguo 24/09/2013, 10:55
Avatar de dAvidcA  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/dev/
Mensajes: 73
Antigüedad: 14 años, 7 meses
Puntos: 7
Respuesta: problema con argumentos y un acumulador en elementos dom

Hola asp95, comprendí lo que deseabas, en este caso es útil usar atributos propios del input, por ejemplo el atributo id, acá va el código:

Código Javascript:
Ver original
  1. function tecla(tmp){
  2.     console.log(tmp);
  3. }
  4. var z=0;
  5. function construir(){
  6.     z++;
  7.     var a = document.createElement('input');
  8.     a.type = 'text';
  9.     a.id = z;
  10.     a.onkeyup = function(){ tecla(a.id);};
  11.     document.getElementById('con').appendChild(a);
  12. }

Recuerda prevenir errores inicializando el la variable z=0 para que sea tomada como número y aplique la operación suma.

Saludos.
  #3 (permalink)  
Antiguo 24/09/2013, 22:55
Avatar de asp95  
Fecha de Ingreso: septiembre-2013
Ubicación: Buenos Aires
Mensajes: 9
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: problema con argumentos y un acumulador en elementos dom

Muchas gracias dAvidcA!!, tu método funciona perfecto. Verdaderamente en el programa real no podía pasar las id's directamente, pero modificando un par de cosas ya funciona.

Listo, por ahora todo solucionado.

Etiquetas: argumentos, dom, elementos, input
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 05:17.