Создание динамических переменных и функций в JS - PullRequest
1 голос
/ 25 июня 2011

Я довольно новичок в JS, но знаком с AS2 (Flash). Во Flash я могу поместить переменные в мувиклипы (объекты) и попытаться сделать что-то подобное здесь с выпадающими списками:

http://tamalecreative.com.au/korban/scripts/dropdown.js

в частности:

   function dropOpen() {
       dropClose(this)
       this.overTrue = true;
       console.log(this.overTrue);
       myNum = 0;
       this.liLength = ($(this).find('ul').children().length)+1;
       for (i=0;i<=this.liLength;i++) {
           this.animateTimer = window.setTimeout(animateIn, (80 * i), this);
       }
   };

Моя проблема связана с логической переменной this.overTrue. Кажется, работает во всем, кроме IE. Я получаю сообщение об ошибке, что объект «OverTrue» не существует. Какой вид имеет смысл для меня, так как я никогда не заявлял об этом. Могу ли я объявить переменную overTrue внутри this? Или я поступаю совершенно неправильно?

Заранее спасибо

1 Ответ

0 голосов
/ 25 июня 2011

Похоже, что IE облажается с последним параметром, возможный обходной путь может быть:

var that = this;
this.animateTimer = window.setTimeout(function() {
  animateIn(that);
}, (80 * i));

В каждом «нормальном» браузере подпись setTimeout выглядит следующим образом:

window.setTimeout(func, delay, [param1, param2, ...]);

В IE однако подпись немного отличается :

window.setTimeout(vCode, iMilliSeconds [, sLanguage])

Bravo IE.Вы удивили меня еще раз

...