我是JS的新手,但熟悉AS2(Flash)。在Flash中,我可以将变量放入movieclips(对象)中,并尝试在这里用下拉菜单做类似的事情:
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"不存在。这对我来说是有意义的,因为我从来没有声明过它。有没有办法让我在"this"中声明var"overTrue"?还是我完全错了?
提前感谢
看起来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])
太棒了IE。你又一次让我大吃一惊