Foros del Web » Programando para Internet » Javascript »

Duda existencial

Estas en el tema de Duda existencial en el foro de Javascript en Foros del Web. Buenas! Quiero cambiar la propiedad "visibility" desde una funcion pasandole la id del objeto en una variable y no se como hacerlo... Por ejemplo, si ...
  #1 (permalink)  
Antiguo 23/07/2002, 03:13
 
Fecha de Ingreso: julio-2002
Mensajes: 2
Antigüedad: 22 años, 6 meses
Puntos: 0
Duda existencial

Buenas!

Quiero cambiar la propiedad "visibility" desde una funcion pasandole la id del objeto en una variable y no se como hacerlo...
Por ejemplo, si tengo una div con id="prueba", haciendo esto funciona:
document.all.prueba.style.visibility="hidden& quot;
... pero yo quiero pasarle el id del objeto en una variable porque asi me ahorraré varios if's, pero no se como hacerlo. Alguien sabe como? Yo he probado cosas asi, pero no chuta:

function miFuncion(variable)
{ document.all.variable.style.visibility="hidde n"
}

Gracias de antemano y un saludo!
  #2 (permalink)  
Antiguo 23/07/2002, 03:35
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 23 años, 4 meses
Puntos: 59
Re: Duda existencial

Para cambiar la propiedad visibility de una capa puedes hacer
Código:
function getObj(name) { 
    if (document.getElementById) {
        return document.getElementById(name).style;
    } else
    if (document.all) {
        return document.all[name].style;
    } else
    if (document.layers) {
        return document.layers[name];
    }
}
//array con las capas a las que quieres afectar
var layers = new Array(
'capa1',
'capa2',
'capa3' // <- sin coma la última capa
);

function show() {
    for (i=0; i < layers.length; i++) {
		if (layers[I] == arguments[0]) { 
			getObj(layers[i]).visibility = 'visible';
		} else {
			getObj(layers[i]).visibility = 'hidden';
		}
	}
}
Luego, defines todas las capas:
<DIV ID="capa1" visibility:hidden;background-color:cyan;">Capa 2</DIV>
<DIV ID="capa1" visibility:hidden;background-color:red;">Capa 2</DIV>
<DIV ID="capa3" visibility:visible;background-color:yellow;">Capa 3</DIV>

Recuerda que las capas deben estar hidden al principio!!


Ah! y si las quieres esconder todas:
function hideAll() {
for (i=0; i < layers.length; i++) getObj(layers).visibility = 'hidden';
}

Estos scripts son de mr.maX (www.maxworld.co.yu), si los usas, dale su crédito!
  #3 (permalink)  
Antiguo 23/07/2002, 03:39
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
Re: Duda existencial

A ver!

Yo lo que dices lo he conseguido con la utilización del getElementById, así:

<div id="prueba">Prueba</div>
<script>
pepito="prueba";
capa=document.getElementById(pepito);
capa.style.visibility="hidden"
</script>

Lo tengo en un ejemplo que he puesto en el siguiente post:
<a href='ir.asp?http://www.forosdelweb.com/mensaje.asp?id=88537&amp;whichpage=6' target='_blank'>http://www.forosdelweb.com/mensaje.asp?i...</a>

O si quieres pincha en el botón &quot;con precarga&quot; de aquí abajo.

Al principio del script (no el js) hago un for para definir un array con el nombre de las imágenes. Y luego las modifico de esta manera en el script.

Miralo y me cuentas.

Lo malo es que sólo funciona en IE y, creo que en NS 6.2

Saludos

<input type='button' onclick="window.open('http://www.webareyou.com/Piramide/index42.html', '', 'width=520,height=410,');" value="Con precarga!">
  #4 (permalink)  
Antiguo 23/07/2002, 03:49
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 23 años, 4 meses
Puntos: 59
Re: Duda existencial

Exacto!!
toda la parafernalia escrita arriba, fuciona en IE y en Gecko! (mozilla, Netscape)

Y por eso es tan larga, claro que para que funcione solo en IE bastan tres líneas!
  #5 (permalink)  
Antiguo 23/07/2002, 03:51
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 23 años, 4 meses
Puntos: 59
Re: Duda existencial

Vi la página, pero creo que me confundió más y no entiendo que quieres hacer....
  #6 (permalink)  
Antiguo 23/07/2002, 04:04
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
Re: Duda existencial

Wakkos!!

Te me adelantaste en la contestación!! Esto me pasa por hacer mil cosas a la vez .

Lo que importa para el ejemplo de la página es lo siguiente:

---aquí defino las variables que son los id de las imágenes-------

for (e=1;e&lt;imagen.length+1;e++){fotos[e]=&quot;foto&quot;+e;}

----aquí utilizo lo que hemos dicho----

for (aaa=0;aaa&lt;imagen.length;aaa++){

fotito=document.getElementById(fotos[aaa+1])
fotito.src=imagen[numero[aaa]];}

----y, en el body, estas son las imágenes, como ves sus id coinciden con el nombre de las variables. ---
&lt;img name=&quot;foto1&quot; id=&quot;Foto1&quot; &gt;
&lt;img name=&quot;foto10&quot; id=&quot;Foto10&quot;&gt;
&lt;img name=&quot;foto2&quot; id=&quot;Foto2&quot;&gt;
&lt;img name=&quot;foto3&quot; id=&quot;Foto3&quot;&gt;
&lt;img name=&quot;foto4&quot; id=&quot;Foto4&quot;&gt;
&lt;img name=&quot;foto5&quot; id=&quot;Foto5&quot;&gt;
&lt;img name=&quot;foto6&quot; id=&quot;Foto6&quot;&gt;
&lt;img name=&quot;foto7&quot; id=&quot;Foto7&quot;&gt;
&lt;img name=&quot;foto8&quot; id=&quot;Foto8&quot;&gt;
&lt;img name=&quot;foto9&quot; id=&quot;Foto9&quot;&gt;
&lt;img name=&quot;foto11&quot; id=&quot;Foto11&quot;&gt;
&lt;img name=&quot;foto12&quot; id=&quot;Foto12&quot;&gt;

Tal vez sea mucho lío :roto: para algo tan sencillo, pero como lo tenía ya hecho...
  #7 (permalink)  
Antiguo 23/07/2002, 07:41
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 5 meses
Puntos: 381
Re: Duda existencial

Pues ala, voy a meter mi cuchara en este mensaje:

arcsel: la función que has creado es correcta salvo por un detalle:

function miFuncion(variable)
{ document.all[variable].style.visibility=&quot;hidden&quot;
}

Con eso debiera funcionarte. Aunque para que sea compatible con todos los navegadores (ardua tarea) fijate en lo que te dijo Wakkos.


Wakkos: estupenda la función getObj. No me la envuelvas que me la llevo puesta <img src='images/tongue.gif' width=15 height=15 align=middle>.

Sólo hacer notar que el foro sigue interpretando [ i ] no como posición i dentro de alguna función si no como inicio de itálicas por lo tanto.... la primera no se muestra y el resto sigue en itálicas.
En la lína 19 del script

&quot;if (layers == arguments[0]) { &quot;

en realidad debe de ser originalmente:

&quot;if (layers[ i ] == arguments[0]) { &quot;

Karlankas: Wow, no había visto terminado tu trabajo de lo de la pirámide (aunque ahora sea un cuadrado <img src='images/tongue.gif' width=15 height=15 align=middle>. Te ha quedado genial


Un saludo a todos
  #8 (permalink)  
Antiguo 23/07/2002, 08:15
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
Re: Duda existencial

Muchas gracias Tunait...

Debería cambiarle el nombre a Cuadrado o algo así, pero... ¡¡soy un romántico!! me gustaba el nombre de pirámide...
  #9 (permalink)  
Antiguo 23/07/2002, 23:56
 
Fecha de Ingreso: julio-2002
Mensajes: 2
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Duda existencial

Muchas gracias a todos! Este foro ha ido de cabeza a mis favoritos. Mucha participacion y ayuda de la buena para los novatos del javascript. Hehehe, no se si habeis hecho bien en ayudarme, ahora cualquier duda caera sobre vosotros, hehehe.

Gracias a todos!
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 22:27.