JavascriptProva

lunedì 27 febbraio 2012

Proseguiamo lo studio del diabolico script

var lis = menuObj.getElementsByTagName('A');
 

 
 for(var no=0;no<lis.length;no++){
   

  if(!showSubOnMouseOver)
   lis[no].onmouseover = stopAutoHide;
   

  lis[no].onmouseout = initAutoHide;
    

  lis[no].onmousemove = stopAutoHide;
  
 }
Crea un insieme di tutti gli elementi A del menuObj.
Per tutti gli elementi di questo insieme, se non è vero "showSubOnMouseOver", al mouseover sull'elemento esegui stopAutoHide; al mouseout dall'elemento esegui initAutoHide; al mousemove sull'elemento esegui stopAutoHide;
Non so quali siano queste funzioni. Che faccio, me le analizzo o vado avanti?
Provo ad andare avanti...

 for(var no=0;no<mainMenuItemArray.length;no++){
    

  var sub = mainMenuItemArray[no].getElementsByTagName('UL')[0];
 

            
  if(sub){
    
   mainMenuItemArray[no].id = 'mainMenuItem' + (no+1);
   
   var div = document.createElement('DIV');
    
   div.className='dhtmlgoodies_subMenu';
    
   document.body.appendChild(div);
    
   div.appendChild(sub);
     
   if(slideDirection=='right'){
     
    div.style.left = getLeftPos(mainMenuItemArray[no]) + mainMenuItemArray[no].offsetWidth + xOffsetSubMenu + 'px';
    
   }
   else{
     
    div.style.left = getLeftPos(mainMenuItemArray[no]) + xOffsetSubMenu + 'px';
    
   }
    
   div.style.top = getTopPos(mainMenuItemArray[no]) + 'px';
    
   div.id = 'subMenuDiv' + (no+1);
    
   sub.id = 'submenuUl' + (no+1);
    
   sub.style.position = 'relative'; 

    
   if(navigator.userAgent.indexOf('Opera')>=0){
     
    submenuObjArray[no+1] = new Array();
     
    submenuObjArray[no+1]['parentDiv'] = mainMenuItemArray[no];
     
    submenuObjArray[no+1]['divObj'] = div;
     
    submenuObjArray[no+1]['ulObj'] = sub;
     
    submenuObjArray[no+1]['width'] = sub.offsetWidth;
     
    submenuObjArray[no+1]['left'] = div.style.left.replace(/[^0-9]/g,'');
    
   }
    
   sub.style.left = 1 - sub.offsetWidth + 'px'; 
    
    
   if(document.all)
    div.style.width = '1px'; 
     
    
   if(navigator.userAgent.indexOf('Opera')<0){
     
    submenuObjArray[no+1] = new Array();
     
    submenuObjArray[no+1]['parentDiv'] = mainMenuItemArray[no];
     
    submenuObjArray[no+1]['divObj'] = div;
     
    submenuObjArray[no+1]['ulObj'] = sub;
     
    submenuObjArray[no+1]['width'] = sub.offsetWidth;
     
     
     
     
    submenuObjArray[no+1]['left'] = div.style.left.replace(/[^0-9]/g,'');
     
    if(fixedSubMenuWidth)
     submenuObjArray[no+1]['width'] = fixedSubMenuWidth;
    
   } 

    
   if(!document.all)
    div.style.width = '1px';   
     
   
  }   
  
 }
Questa è colossale: la devo spezzettare un po' altrimenti mi impiccio...

Esegue qualcosa per tutti i mainMenuItem, che erano stati messi tutti nell'array mainMenuItemArray.
Vediamo cosa esegue...

var sub = mainMenuItemArray[no].getElementsByTagName('UL')[0];
chiama sub il primo elemento UL contenuto in un mainMenuItem.
Cioè questo:
 
<li><a href="#">Siti</a>

  <ul>
   
   <li><a href="#">Grafica</a></li> 
   <li><a href="#">CSS</a></li>   
   <li><a href="#">Javascript</a></li>   
   <li><a href="#">Web Design</a></li>
  
  </ul> 
</li>
Quindi se esiste questo sub...
mainMenuItemArray[no].id = 'mainMenuItem' + (no+1);
   
var div = document.createElement('DIV');
    
div.className='dhtmlgoodies_subMenu';
    
document.body.appendChild(div);
    
div.appendChild(sub);
ridenomina il corrispettivo mainMenuItem dell'Array in "mainMenuItem..." + il suo numero progressivo nell'Array; crea un nuovo elemento DIV chiamandolo div; attribuisce a questo elemento la classe "dhtmlgoodies_subMenu"; appende al documento questo div;

Mi sfugge il senso globale di tutte queste cose...
Ecco: il senso di questa è che per ogni mainMenuItem si va a vedere se contengono un sottoelenco: nel caso in cui lo contengano si ridenomina il corrispettivo mainMenuItem e si crea un DIV che viene aggiunto al documento.
Sì, questa ha effettivamente senso!
Ecco: questa analizza se ogni voce del menu principale ha o no dei sottomenu, nel qual caso prepara i sottomenu creando i DIV corrispondenti! Geniale, sì!

Nessun commento:

Posta un commento