我对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);
}
};
我的问题在于&#39; this.overTrue&#39;布尔变量。除了IE之外,它似乎适用于所有东西。我得到了对象&#39; overTrue&#39;不存在。因为我从来没有宣布它,所以对我来说哪种有意义。有没有办法让我宣布var&#39; overTrue&#39;在里面&#39;这个&#39;?或者我是以完全错误的方式解决这个问题?
提前致谢
答案 0 :(得分:0)
似乎IE正在搞砸最后一个参数,可能的解决方法可能是:
var that = this;
this.animateTimer = window.setTimeout(function() {
animateIn(that);
}, (80 * i));
在每个“理智”的浏览器中,setTimeout
签名都是这样的:
window.setTimeout(func, delay, [param1, param2, ...]);
在IE 但中,签名为slightly different:
window.setTimeout(vCode, iMilliSeconds [, sLanguage])
Bravo IE。你再一次让我感到惊讶