Como pasar objetos por parámetro

Es que quiero pasar un objeto a una función, pero ese nombre esta compuesto ya que todas las cajas de texto tienen el mismo nombre excepto el final que es un numero. Cada caja de texto tiene asociada un botón que cuando le pulsas le pasas a la función el numero que se debe de concatenar a la caja de texto. Cuando pulsas el botón se abre una nueva ventana, y se selecciona un elemento de esta y lo que quiero es que se meta en la caja de texto el texto seleccionado de la ventana que se ha abierto, pero me dice que cuando le paso por parámetro el nombre de la caja de texto me dice que no la conoce. Yo lo hago haciendo que document. Formulario. Cajatexto0 = valor, ¿Pero es que no me lo reconoce ya que debo de concatenar el 0. COmo lo puedo hacer para que se pueda pasar a una función el nombre de un elemento concatenadole un numero?

1 respuesta

Respuesta
1
Lamento decirte que no entiendo bien tu problema... A pesar de lo cual intentaré ayudarte. Si lo que te cuento no te sirve, escríbeme de nuevo con muestras de código y más detalles.
A veces nos encontramos con el problema de que tenemos que acceder desde una función a un objeto que sólo se determina en tiempo de ejecución, bien porque se haya creado el objeto dinámicamente, bien porque la misma función pueda tener efecto sobre varios objetos y queremos que sea suficientemente general para cubrirlos todos, y otros que podamos crear más adelante.
En tu caso, parece que los nombres de las distintas cajas de texto se diferencian por un número, que sería el único que necesitarías pasar a tu función. La solución consiste en crear la referencia del objeto como una cadena de texto, y EVALUARLA, es decir, interpretarla dentro del código de la función como si fuera parte del script. Esto se hace mediante la función eval(). A continuación te doy un ejemplo:
function asignaCero(indice) {
var referenciaObjeto='document.formulario.cajatexto';
eval(referenciaObjeto+indice+'.value=0');
}
La función toma un número, lo concatena a una cadena 'document.formulario.cajatexto', concatena a eso '.value=0' y ejecuta la cadena resultante. Si, por ejemplo, haces la llamada asignaCero(3), se ejecutará la línea:
document.formulario.cajatexto3.value=0;
De este modo no tienes por qué saber a priori (cuando programas la función) cuántas cajas de texto hay, ni cuáles son sus nombres exactos (viene bien que se deduzcan de un patrón, como en tu caso, pero observa que podrías hacer lo mismo pasando a la función el nombre de la caja de texto completa, sólo con cambiar un poco la cadena a ejecutar (quitando "cajatexto").
Como en tu caso hay varias ventanas implicadas, recuerda cómo se accede de los objetos de una ventana a los de otra:
(Suponemos que la ventana hija se ha abierto con vHija=window.open(...). Suponemos que en ambas ventanas hay un FORM con NAME="formulario" y una caja de texto llamada "cajatexto0". Ajusta esto a tus necesidades.)
Desde la madre a la hija:
vHija.document.formulario.cajatexto0.value;
Desde la hija a la madre:
self.opener.document.formulario.cajatexto0.value;
Espero que, combinando estas dos cosas, puedas llegar a una solución satisfactoria. Si sigues teniendo problemas, vuelve a escribirme dándome más detalles y muestras de código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas