Ver Mensaje Individual
  #9 (permalink)  
Antiguo 18/10/2005, 12:22
Avatar de caricatos
caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola:

Si puedes usar una cadena para referenciar un objeto, no tiene sentido que incrustes el objeto... fíjate que la recursividad se hace en base a un string, que seguramente en forma nativa se convierta a una función o a un objeto mediante un "eval"...

Una función puede recibir un objeto, que es lo que hace init de tu ejemplo, pero setTimeout lo que recibe es una cadena y debes imaginarte como quedaría esa cadena aplicándole un eval:

alert("init('" + obj + "')"); seguramente muestre esta alerta:
init('Object'), ya que Object es la cadena que devuelve cualquier objeto...
Pero también cualquier objeto lo puedes referenciar en base a una cadena:

var miBoton = document.getElementById("boton");

Luego con window["miBoton"] lo puedes referenciar (fíjate que miBoton) es una variable, pero lo que hay dentro de los corchetes es solo una cadena (no se trata de un objeto)...

Bueno, después de estas reflexiones, verás que puedes usar recursividad en base a cadenas muy fácilmente (como he dicho en otro mensaje, yo lo he hecho en muchas ocasiones)

<body onload="window['boton'] = document.getElementById('boton');init('boton')">

y la función:

function init(obj) {
cont += 5;
window[obj].style.backgroundColor = "rgb(150,150," + cont + ")";
setTimeout("init('" + obj + "')", 1000);
}

¿A que es fácil... ?

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo