Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/06/2007, 06:28
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años
Puntos: 45
Re: Un FAQ guiado para novatos en JavaScript

Código PHP:

<script>



function 
e(q,noBr) {
    
document.body.appendChilddocument.createTextNode(q) );
    if(!
noBrdocument.body.appendChilddocument.createElement("BR") );
}


var 
cuerpo=document.getElementById("cuerpo");

function 
getSoloDivs(padre) {
    var 
hijos=padre.childNodes;
    for(var 
i=0dev=[]; i<hijos.lengthi++)
        if( 
hijos[i].nodeType==&& hijos[i].tagName.toUpperCase()=="DIV" )
            
dev[dev.length]=hijos[i];
    return 
dev;
}

// capturamos todos los menus (hijos DIV de cuerpo) y los eliminamos del body
var CUERPO_DIVS=getSoloDivs(cuerpo);
for(var 
i=0DIVS=[]; i<CUERPO_DIVS.lengthi++) {
    
DIVSCUERPO_DIVS[i].id ] = CUERPO_DIVS[i];    // almaceno
    
cuerpo.removeChildCUERPO_DIVS[i] );    // elimino

    // EVENTOS PARA CADA DIV EN EL ARRAY DIVS, siempre que no sean de tipo código (no habrá excepto cancelar burbujeo en el onclick)
    
if( /codigo/i.test(CUERPO_DIVS[i].id) ) {
        
DIVSCUERPO_DIVS[i].id ].onclick=function(evento) {
            
//no queremos que se propague a la capa padre el evento
            //si no no podríamos seleccionar ni copiar ni nada
            
if(window.eventwindow.event.cancelBubble true;                
            else 
evento.stopPropagation();
        }
    }
    else {
        var 
cadaDiv=getSoloDivsDIVS[CUERPO_DIVS[i].id] );
        for(var 
j=0j<cadaDiv.lengthj++) {
            
cadaDiv[j].onmouseover=function() {
                
this.className="hover";
            }
            
cadaDiv[j].onmouseout=function() {
                
this.className="";
            }
            
cadaDiv[j].onclick=function(evento) {
                var 
estoyExpandido=false;
                
//quitamos todo lo que hayamos adjuntado en los demas div de la misma categoria
                
var cadaDiv=getSoloDivs(this.parentNode);
                for(var 
k=0k<cadaDiv.lengthk++) {
                    var 
cadaDiv_DIVS=getSoloDivs(cadaDiv[k]);
                    if( 
cadaDiv_DIVS.length>)    {    //hay submenu en algun cadaDiv
                        
if( cadaDiv[k] == this )        //yo tengo submenu, pero me lo oculto también
                            
estoyExpandido=true;
                        
cadaDiv[k].removeChild(cadaDiv_DIVS[0]);
                    }
                }
                if(!
estoyExpandido)    {    //adjuntamos aqui lo que ponga en el atributo show
                    
if( this.getAttribute("show") == null )
                        
this.setAttribute("show""menuAcciones");
                    
this.appendChildDIVSthis.getAttribute("show") ] );
                }
                if(
window.eventwindow.event.cancelBubble true;                //no queremos que se propague a la capa padre el evento
                
else evento.stopPropagation();
            }
        }
    }
}


//mostramos el menú inicial
cuerpo.appendChildDIVS["menuInicial"] );





//                AL CERRAR!!
// ningun DIV puede contener otro DIV con mas DIVs dentro = ningun DIV puede contener un menu dentro
// tampoco pueden contener ningun codigo



e("FIN DE CARGA SIN ERRORES");



</script>

</body>
</html> 

El resultado es bastante vistoso, y puede llegar a ser una buena manera de ir aprendiendo ejemplos básicos en javascript.


Seguiré desarrollando.
Byes.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.