2010-06-05 4 views
0

J'ai un tableau avec les hauteurs de chaque div caché, mais quand je l'utilise, le div saute instantanément, plutôt que de glisser lentement comme s'il y avait un nombre littéral.Mootools Javascript ne peut pas être poussé vers le tableau


EDIT: test semble révéler qu'il est un problème avec la méthode de poussée, comme content_height.push(item.getElement('.moreInfo').offsetHeight);alert(content_height[i]); donne non défini, mais alert(item.getElement('.moreInfo').offsetHeight); donne les valeurs correctes


Javascript:

window.addEvent('domready', function(){ 

var content_height = [];i=0; 

$$('.bio_accordion').each(function(item){ 
    i++; 
    content_height.push(item.getElement('.moreInfo').offsetHeight); 
    var thisSlider = new Fx.Slide(item.getElement('.moreInfo'), { mode: 'horizontal' }); 
    thisSlider.hide(); 


    item.getElement('.moreInfo').set('tween').tween('height', '0px'); 

    var morph = new Fx.Morph(item.getElement('.divToggle')); 
    var selected = 0; 
    item.getElement('.divToggle').addEvents({ 
    'mouseenter': function(){ 
    if(!selected) this.morph('.div_highlight'); 
    }, 

    'mouseleave': function(){ 
    if(!selected) { 
    this.morph('.divToggle'); 
    } 
    }, 

    'click': function(){ 
    if (!selected){ 
    if (this.getElement('.symbol').innerHTML == '+') 
    this.getElement('.symbol').innerHTML = '-'; 
    else 
    this.getElement('.symbol').innerHTML = '+'; 
    item.getElement('.moreInfo').set('tween', { 
    duration: 1500, 
    transition: Fx.Transitions.Bounce.easeOut 
    }).tween('height', content_height[i]); //replacing this with '650' keeps it smooth 
    selected = 1; 
    thisSlider.slideIn(); 
    } 
    else{ 
    if (this.getElement('.symbol').innerHTML == '+') 
    this.getElement('.symbol').innerHTML = '-'; 
    else 
    this.getElement('.symbol').innerHTML = '+'; 
    thisSlider.slideOut(); 
    item.getElement('.moreInfo').set('tween', { 
    duration: 1000, 
    transition: Fx.Transitions.Bounce.easeOut 
    }).tween('height', '0px'); 
    selected = 0; 
    } 
    } 
    }); 

}); 




}); 

Pourquoi cela pourrait-il être? Merci beaucoup!

+0

Avez-vous vérifié pour voir si « offsetHeight » est vous revenir une valeur avec "px" ajoutée? Êtes-vous sûr que ce n'est pas quelque chose comme "auto"? Serait-ce une chaîne, et non un numéro? – Pointy

+1

FYI: Vous n'avez pas besoin d'incrémenter 'i' manuellement, utilisez simplement' els.each (fn (el, index) {}); '. –

Répondre

0

Vous avez besoin de content_height [i-1].

Aussi je vous recommande d'utiliser une autre indexation (depuis votre code à l'aide variable globale « i » et il pourrait échouer à cause de fermetures):

$$('.bio_accordion').each(function(item, index) { 
    content_height[index] = item.getElement('.moreInfo').offsetHeight; 

    .... 

    tween('height', content_height[index]); 


}); 
Questions connexes