Foros del Web » Programando para Internet » Javascript »

interpretar variables desde window.opener

Estas en el tema de interpretar variables desde window.opener en el foro de Javascript en Foros del Web. Muy buenas, Tengo un pequeño problema. Os explico primero un poco lo que quiero hacer y si alguien tiene alguna idea de como solucionarlo que ...
  #1 (permalink)  
Antiguo 27/06/2005, 02:58
 
Fecha de Ingreso: enero-2005
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
interpretar variables desde window.opener

Muy buenas,

Tengo un pequeño problema. Os explico primero un poco lo que quiero hacer y si alguien tiene alguna idea de como solucionarlo que me lo diga...

Tengo un formulario con un boton que llama a una galería mediante javascript. Mi intención es que al clicar en una imagen vuelva al formulario y se quede con la imagen que he seleccionado.

Código:
function image(num, id, imagen)
{
	input1 = "al" + num;
	input2 = "id" + num;
	window.opener.document.form_nuevo.input1.value = imagen;
	window.opener.document.form_nuevo.input2.value = id;
	window.close();
}
Esta es la funcion que va dentro de la galería. Se ve bastante claro, no? Creo el nombre de los input dinamicamente ya que tengo más de uno y le asigno el valor que quiero.

El caso es que no se como hacer para que me interprete las variables input1 y input2. He probado con todo. He puesto getElementById(input1) y me da el mensaje de error de que window.opener.document.form_nuevo.getElementById(i nput1) no es una función, he probado con eval(input1) y me dice que la funcion eval se tiene que llamar directamente, forms['form_nuevo'].elements['input1'] y nada, eval("document(" + input1 + ")") y muchas otras cosas más, pero no hay manera. Si a alguien se le ocurre alguno más ya sabe, que lo postee aquí.

Venga, un saludo y gracias.
  #2 (permalink)  
Antiguo 27/06/2005, 03:25
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Qué tal,

getElementById() es un método para documento y no sirve para un formulario. Accedes al elemento por su id sin necesidad de recorrer el arbol del documento.

Basta con que le pidas

opener.document.getElementById(input1).value = imagen;
opener.document.getElementById(input2).value = id;

Usando eval sería

eval('opener.document.form_nuevo.' + input1 +'.value = imagen;')
eval('opener.document.form_nuevo.' + input2 + '.value = id;')

Un saludo
  #3 (permalink)  
Antiguo 27/06/2005, 04:08
 
Fecha de Ingreso: enero-2005
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
Gracias por contestar Tunait,

No lo entiendo, no me funciona. He provado las dos opciones que me ponias y me devuelven el mismo error:

opener.document.getElementById(input1) no tiene propiedades (has no properties)

opener.document.form_nuevo.al1 has no properties no tiene propiedades

Lo que si que veo es que en el segundo caso ya utiliza el valor de input1 -> al1

Voy a probar cosas con esto, a ver si detecto algún error en mi codigo o algo...

Por si te sirve de algo te matizo un poco más como tengo la estructura de páginas. Desde página1.php mediante un window.open llamo a pagina2.php que vendría a ser la galería. Una vez en la galería al clicar en una imagen utilizo la función image para devolver los parametros a página1.php

Un saludo.
  #4 (permalink)  
Antiguo 27/06/2005, 04:48
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Qué extraño, en la opener no usas ningún frame ni nada ¿no?

¿has verificado los nombre de los campos que sean idénticos? (sin difenrecias de mayúsculas/minúsculas)

¿Hay alguna url donde poder verlo en marcha?
  #5 (permalink)  
Antiguo 27/06/2005, 05:07
 
Fecha de Ingreso: enero-2005
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
No, no utilizo ningún frame y he comprobado que toda la nomenclatura esté correcta. Incluso he buscado en todas la páginas que llevo programadas que no se repitiese el nombre del formulario ni de los input...
No sé muy raro. De momento no está colgado aún. Si se te ocurre algo me lo dices. Pero que el mensaje de error me diga que no tiene propiedades es que no lo está cojiendo como un objeto.

Provaré de utilizar el explorer a ver, pero me gustaría que se puedese utilizar en todos los navegadores.

Gracias por tu ayuda.
  #6 (permalink)  
Antiguo 27/06/2005, 05:13
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
A ver si al menos explorer te devuelve un error más descriptivo
  #7 (permalink)  
Antiguo 27/06/2005, 05:22
 
Fecha de Ingreso: enero-2005
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
mira explorer me devuleve: opener.document.getElementById(...) es nulo o no es un objeto

¿Qué quiere que declare las variables input1 e input2?

¡Lo más fuerte es que acabo de encontrar una función parecida que sí que me funciona!

Código:
function foto(id, foto)
{
	window.opener.document.form_editar.idfoto.value = id;
	window.opener.document.form_editar.foto.src = foto;
	window.close();
}
En esta función sólo tengo un espacio donde poner el valor, no tengo que utilizar variables para crear el nombre del objeto y aquí si que me lo coje como lo estaba haciendo al principio.

...
  #8 (permalink)  
Antiguo 27/06/2005, 05:29
 
Fecha de Ingreso: enero-2005
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
por cierto creo que buscando en google he encontrado tu web sobre javascript jeje

muy útil la verdad
  #9 (permalink)  
Antiguo 27/06/2005, 05:30
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
¿has probado a hacerlo directamente sin usar variables?

por ejemplo, si tienes los campos al1 e id1 probar la función primero para cambiar el valor a esos campos (directamente)

Código:
function image(num, id, imagen)
{
	//input1 = "al" + num;
	//input2 = "id" + num;
	window.opener.document.form_nuevo.al1.value = imagen;
	window.opener.document.form_nuevo.id1.value = id;
	window.close();
}
Si así te funciona sin dar error quiere decir que al formar el nombre de los elementos algo va mal.

En caso de que así te funcione prueba a ver qué valores toman las variables input1 e input2

Código:
function image(num, id, imagen)
{
	input1 = "al" + num;
	input2 = "id" + num;
             alert(input1) ; alert(input2)
	//window.opener.document.form_nuevo.input1.value = imagen;
	//window.opener.document.form_nuevo.input2.value = id;
	//window.close();
}


aunque si dices que esa otra función que has encontrado te funciona ok yá lo tengas resuelto
  #10 (permalink)  
Antiguo 27/06/2005, 05:32
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cita:
Iniciado por MiquelCS
por cierto creo que buscando en google he encontrado tu web sobre javascript jeje

muy útil la verdad
ops, gracias
  #11 (permalink)  
Antiguo 27/06/2005, 05:44
 
Fecha de Ingreso: enero-2005
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
Vale!!

Ya está ya me funciona. Muchas gracias por tu paciencia tunait.

Justo solucionado para la hora de comer ;)

Nos vemos.
  #12 (permalink)  
Antiguo 27/06/2005, 07:20
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
...¿nos quedaremos con las ganas de saber qué era lo que estaba mal?
  #13 (permalink)  
Antiguo 27/06/2005, 09:00
 
Fecha de Ingreso: enero-2005
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
Hola de nuevo,

Pues la verdad es que aún no entiendo que era lo que estaba mal. La función leia primero "al1" (input1), me daba error y ya no seguia leyendo. Entonces he cogido he comentado la linia del "...document.input1..." y ha pasado a leer directamente "id1" (input2). Pues ahí si que funcionaba!! Cómo no entendia el por qué he cogido he cambiado los nombres de los inputs al1, al2... a img1, img2 ... y ya me ha funcionado.

Esas cosas que pasan a veces que no acabas de entender el por qué. Seguro que hay alguna explicación...

Gracias por tu ayuda.
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 14:13.