Mootools Javascript не может передать массив - PullRequest
0 голосов
/ 05 июня 2010

У меня есть массив с высотой каждого скрытого div, но когда я его использую, div мгновенно спрыгивает вниз, а не медленно скользит, как при наличии буквального числа.


РЕДАКТИРОВАТЬ: тестирование показывает, что это проблема с методом push, так как content_height.push(item.getElement('.moreInfo').offsetHeight);alert(content_height[i]); дает неопределенное значение, но alert(item.getElement('.moreInfo').offsetHeight); дает правильные значения


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;
   }
  }
  });

 } );




});

Почему это могло быть? Большое спасибо!

Ответы [ 2 ]

1 голос
/ 05 июня 2010

В вашем коде нет ничего плохого.Метод push работает как положено - вот пример: http://jsfiddle.net/oskar/D2xps/

0 голосов
/ 06 июня 2010

Вам нужно content_height [i - 1].

Также я бы порекомендовал вам использовать другое индексирование (поскольку ваш код использует глобальную переменную 'i' и он может завершиться ошибкой из-за замыканий):

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

    ....

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


});
...