Foros del Web » Programando para Internet » Javascript »

Problemas con mi codigo (mal hecho)

Estas en el tema de Problemas con mi codigo (mal hecho) en el foro de Javascript en Foros del Web. Código HTML: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns= "http://www.w3.org/1999/xhtml" > <head> <meta http-equiv="Content-Type" content= "text/html; charset=utf-8" /> <title> Documento sin título ...
  #1 (permalink)  
Antiguo 20/07/2012, 10:38
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 13 años
Puntos: 16
Pregunta Problemas con mi codigo (mal hecho)

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<style type="text/css">
<!--
#todo {
border: 1px solid #EAEAEA;  /* Borde de la galería */
padding: 10px;
background: white;  /* Fondo de la galería */
width: 410px;  /* Ancho de la galería */
height: 300px;  /* Alto de la galería */
}
#heroe1 {
border-radius: 3px;
border: 1px solid #F2F2F2;  /* Borde de la imagen */
padding: 3px;
width: 120px; /* Ancho de la imagen */
height: 120px; /* Alto de la imagen */
display:block;
}
#heroe2 {
border-radius: 3px;
border: 1px solid #F2F2F2;  /* Borde de la imagen */
padding: 3px;
width: 120px; /* Ancho de la imagen */
height: 120px; /* Alto de la imagen */
display:none;
}
.miniatura {
width:  60px;  /* Ancho de las miniaturas */
height:  60px;  /* Alto de las miniaturas */
float: left;
cursor: pointer;
padding: 5px;
}
-->
</style>
</head>

<body>
<div id="todo">
<div>
<div id="heroe1">Contenido primer heroe</div>
<div id="heroe2">Contenido segundo heroe</div>
<div>
<img class="miniatura" onclick="javascript:document.getElementById('heroe1').style.display='block';javascript:document.getElementById('heroe2').style.display='none';
" src="URL-IMAGEN-1" />
<img class="miniatura" onclick="javascript:document.getElementById('heroe2').style.display='block';javascript:document.getElementById('heroe1').style.display='none';" src="URL-IMAGEN-2" />

</div>
</div>
</body>
</html> 
Esto es lo que casi yo solito he podido hacer, y funciona bien. Si os fijais hay 2 botones que son imagenes y se intercambian 2 divs segun en que imagen clickees.
Vale, ahora mi problema, yo quisiera poner no 2, sino unos cuantos mas, asi que esto ya no me es util, alguna idea?!?

Gracias de antemano!
  #2 (permalink)  
Antiguo 20/07/2012, 11:28
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problemas con mi codigo (mal hecho)

no había necesidad de repetir el Post: http://www.forosdelweb.com/f13/probl...dades-1004597/, consulte las políticas del foro, no siempre las respuestas serán inmediatas, somos muchos en el foro, de diferentes regiones.

para hacer lo que quiere, existen diversas formas:

1 - recorrer el DOM ocultando todas las capas similares y luego mostrar la indicada, puede utilizar document.getElementsByTagName(), o con un fw como jQuery buscar por clases CSS.

2 - tener cada ID de las capas en un arrat JS y recorrerlo para ocultar todas y mostrar la indicada.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 20/07/2012, 11:31
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Problemas con mi codigo (mal hecho)

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
style type="text/css">
<!--
#todo {
border1px solid #EAEAEA;  /* Borde de la galería */
padding10px;
backgroundwhite;  /* Fondo de la galería */
width410px;  /* Ancho de la galería */
height300px;  /* Alto de la galería */
}
#heroe1 {
border-radius3px;
border1px solid #F2F2F2;  /* Borde de la imagen */
padding3px;
width120px/* Ancho de la imagen */
height120px/* Alto de la imagen */
display:block;
}
#heroe2 {
border-radius3px;
border1px solid #F2F2F2;  /* Borde de la imagen */
padding3px;
width120px/* Ancho de la imagen */
height120px/* Alto de la imagen */
display:none;
}
.
miniatura {
width:  60px;  /* Ancho de las miniaturas */
height:  60px;  /* Alto de las miniaturas */
floatleft;
cursorpointer;
padding5px;
}
-->
</
style>
<
script type="text/javascript">
    var 
ListHeroes={};
    
ListHeroes[0]={id:'heroe1'};
    
ListHeroes[1]={id:'heroe2'};
    
ListHeroes[2]={id:'heroe3'};
    function 
showHeroes(id){
        for(var 
a in ListHeroes){
            var 
ListHeroes[a];
            if(
id==a){
                
document.getElementById(o.id).style.display='block';    
            }else{
                
document.getElementById(o.id).style.display='none';    
            }
        }
    }
</script>
</head>

<body>
<div id="todo">
<div>
    <div id="heroe1">Contenido primer heroe</div>
    <div id="heroe2">Contenido segundo heroe</div>
    <div id="heroe3">Contenido tecer heroe</div>
    <div>
        <img class="miniatura" onclick="javascript:showHeroes(0)" src="URL-IMAGEN-1" />
        <img class="miniatura" onclick="javascript:showHeroes(1)" src="URL-IMAGEN-2" />
        <img class="miniatura" onclick="javascript:showHeroes(2)" src="URL-IMAGEN-3" />
    </div>
</div>
</div>
</body>
</html> 
a ver si te sirve XDXD
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #4 (permalink)  
Antiguo 20/07/2012, 12:07
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Problemas con mi codigo (mal hecho)

Al parecer lo que querés es que cuando una capa sea visible la otra se oculte, podés hacer algo así
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>mostrar oculta capas</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. p{
  9. font-weight: bold;
  10. font-size: 11pt;
  11. width: 180px;
  12. cursor: pointer;
  13. font-family: arial, serif;
  14. padding: 5px;
  15. border: dotted 1px #554F9D;
  16. margin-bottom: 2px;
  17. margin-top: 3px;
  18. background-color:white;
  19. }
  20. #Uno,#Dos,#Tres{
  21. width: 180px;
  22. font-family: arial, serif;
  23. padding: 15px 5px;
  24. border: dotted 1px #554F9D;
  25. background-color:#A3AD76;
  26. font-size: 10pt;
  27. margin-top: 3px;
  28. margin-bottom:20px;
  29. }
  30.  
  31. #Uno{
  32. display: block;
  33. }
  34.  
  35. #Dos, #Tres{
  36. display: none;
  37. }
  38.  
  39. /*]]>*/
  40. <script type="text/javascript">
  41. //<![CDATA[
  42. function contenido(cual){
  43. var capas = new Array("Uno", "Dos", "Tres");
  44. var anterior;
  45. var i;
  46. var e;
  47.  
  48.     for(i in capas){
  49.     e = document.getElementById(capas[i]);
  50.         anterior = e.previousSibling;
  51.         while(anterior && anterior.nodeType != 1){
  52.         anterior = anterior.previousSibling;
  53.         }
  54.     capas[i] == cual?e.style.display='block':e.style.display='none';   
  55.  
  56. }
  57. }
  58. //]]>
  59. </head>
  60.  
  61. <div id="Uno">Texto uno</div>
  62.  
  63. <div id="Dos">Texto dos</div>
  64.  
  65. <div id="Tres">Texto tres</div>
  66.  
  67. <p onclick="contenido('Uno')" >uno</p>
  68. <p onclick="contenido('Dos')" >dos</p>
  69. <p onclick="contenido('Tres')" >tres</p>
  70. </body>
  71. </html>

En el ejemplo, usé párrafos en lugar de imágenes, pero es lo mismo, el parámetro que se pasa a la función es el id de la capa que debe mostrarse (las otras las oculta)
Por defecto, la capa uno está visible. Si querés preservar el espacio generado por el alto de las capas, usá la propiedad visibility y no la propiedad display.
Una sugerencia final, si usás eventos de javascript, es redundante e innecesario usar el pseudoprotocolo javascript, eso en todo caso cuando llamas una función en un <a href="javascript...">xxx</a

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: funcion, html, botones
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 06:55.