Foros del Web » Programando para Internet » Javascript »

ayuda para crear elemenos con JS

Estas en el tema de ayuda para crear elemenos con JS en el foro de Javascript en Foros del Web. Hola foreros, gracias por leer mi post, tengo que crear unos elementos cada vez que presiono un boton, pero uno de ellos es una imagen ...
  #1 (permalink)  
Antiguo 06/02/2010, 18:20
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Busqueda ayuda para crear elemenos con JS

Hola foreros, gracias por leer mi post, tengo que crear unos elementos cada vez que presiono un boton, pero uno de ellos es una imagen de calendario que debe llamar otra funcion javascript para seleccionar una fecha, la cuestion es que no me funciona el calendario mas si el crear el elemento, tengo el siguiente codigo hecho:

Código:
var num2=0;
// Funcion para crear lineas de objetos
function crear2(obj) {
  num2++;
  fi = document.getElementById('fiel2'); 
  contenedor = document.createElement('div'); 
  contenedor.id = 'div'+num2; 
  fi.appendChild(contenedor); 
  
  ele = document.createElement('input'); // 5
  ele.type = 'text'; 
  ele.name = 'fecha_tiempo'+num2; 
  ele.id = 'fecha_tiempo'+num2; 
  ele.readOnly = true;
  contenedor.appendChild(ele); 
  
  ele = document.createElement('img'); 
  ele.name = 'imagen_tiempo'+num2; 
  ele.id = 'imagen_tiempo'+num2; 
  ele.src = 'images/cal.gif';
  ele.align = 'absmiddle';
  ele.onmouseover = "fnInitCalendar(this, 'fecha_tiempo"+num2+"', 'style=calendar.css,close=true')";
  contenedor.appendChild(ele); 
}
Y la funcion JS es onmouseover ejecute lo siguiente:

Código:
"fnInitCalendar(this, 'variable_input', 'style=calendar.css,close=true')";
Cualquier ayuda se agradece para hacer funcionar dicha funcion, gracias de antemano.
  #2 (permalink)  
Antiguo 06/02/2010, 18:30
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: ayuda para crear elemenos con JS

en javascript, los eventos son como funciones. de modo que tienes que asignar una funcion, no un string como el codigo que presentas.
Código:
// funcion anonima;
element.event = function(){};

// funcion previamente definida;
function func(){}
element.event = func;
en tu caso, dado que la funcion requiere de parametros, tienes que crear una funcion anonima y dentro de estas haces la llamada a la funcion pasando los parametros que necesites.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 11/02/2010, 16:25
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: ayuda para crear elemenos con JS

Hola ya me medio funciona la cosa, solo que me pone la fecha donde le da la gana practicamente, les pego el codigo para ver en que damos, porque de verdad estoy frustrado ya, porque no me termina de funcionar bien.

Código:
var num2=0;
// Funcion para crear lineas de objetos
function crear2(obj) {
  num2++;
  fi = document.getElementById('fiel2'); // 1
  contenedor2 = document.createElement('div'); // 2
  contenedor2.id = 'div'+num2; // 3
  fi.appendChild(contenedor2); // 4
  
  ele = document.createElement('input'); // 5
  ele.type = 'text'; // 6
  ele.name = 'fecha_tiempo'+num2; // 6
  ele.id = 'fecha_tiempo'+num2; // 6
  ele.readOnly = true;
  ele.class = 'fecha_tiempo';
  contenedor2.appendChild(ele); // 7
  
  ele = document.createElement('img'); // 5
  ele.name = 'imagen_tiempo'+num2; // 6
  ele.id = 'imagen_tiempo'+num2; // 6
  ele.src = 'images/cal.gif';
  ele.align = 'absmiddle';
  ele.onmouseover = function () { fnInitCalendar(this, 'fecha_tiempo'+num2, 'style=calendar.css,close=true') } 
  contenedor2.appendChild(ele); // 7

  
  ele = document.createElement('input'); // 5
  ele.type = 'button'; // 6
  ele.value = '-'; // 8
  ele.name = 'div'+num2; // 8
  ele.onclick = function () {borrar2(this.name)} // 9
  contenedor2.appendChild(ele); // 7

  var tiempos = document.getElementById('campostiempo');
  tiempos.value= num2; 
  
}

function borrar2(obj) {
  fi = document.getElementById('fiel2'); // 1 
  fi.removeChild(document.getElementById(obj)); // 10
  num2=num2-1;
  //alert(num);
  var elemento = document.getElementById('camposmateriales');
  elemento.value= num2; 
}
  #4 (permalink)  
Antiguo 12/02/2010, 09:37
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: ayuda para crear elemenos con JS

Algun forero me podria ayudar? de verdad que estoy ya algo desesperado...
  #5 (permalink)  
Antiguo 12/02/2010, 16:09
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: ayuda para crear elemenos con JS

deberias tener calma, si te desesperas no puedo pensar bien. creo que tu problema esta especificamente aqui.
Código:
 ele.onmouseover = function () { fnInitCalendar(this, 'fecha_tiempo'+num2, 'style=calendar.css,close=true') }
al momento de invocarse la funcion fnInitCalendar, a este se le pasa como argumento el ultimo valor asignado a la variable num2. tienes que crear un closure de esa variable para que el valor siempre sea el mismo cuando se invoque el evento.
Código:
 ele.onmouseover = (function (num) { 
return function(){fnInitCalendar(this, 'fecha_tiempo'+num, 'style=calendar.css,close=true');};
})(num2);
si es la primera vez, te sera un lio entender el codigo. basicamente un closure es cuando el alcance de una variable local aun es visible aunque la funcion ya hubiera terminado la interpretacion del codigo. en este caso, sea crea e invoca una funcion que a su vez devuelve otra funcion y esta ultima es la que se asigna como evento. cuando se invoca esta funcion, le pasamos la variable num2 al argumento num.

finalmente se devuelve una funcion anonima que invoca la funcion fnInitCalendar con varios parametros. fijate que aqui se utiliza el argumento num. es aqui cuando se crea el closure, porque se trata de una funcion interna que utiliza una variable local de otra funcion. recuerda que los argumentos tambien son variables locales en una funcion.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: js
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 01:22.