2013-05-01 61 views
-1
function Main(BombPosTopr, BompPosLeftr){ 
if (CheckRight == false){ 
     //$("#Main").prepend('<div class="Effect" style="absolute; top:' + BombPosTopr + 'px; left: '+ BombPosLeftr +'px;"></div>'); 
     ArrayEffects.push(new EffectVoorBom(BombPosTopr,BombPosLeftr)); 
     BombPosLeftr += 30; 
     } 
     }; 

     this.explosionTime2 = setTimeout(function(){ 
     **self2.removeEffect();** 
     } 

} 
function EffectBom(BombPosTopr, BompPosLeftr){ 
var self2 = this; 
this.el = $('<div/>'); 
this.el.addClass('Effect'); 
this.el.css({position : 'absolute', top : BombPosTopr + 'px', left : BompPosLeftr+'px'}); 
$("#Main").prepend(this.el); 


self2.removeEffect = function(){ 
**self2.el.remove();** 
} 

我有2个函数,在我的主要我需要添加效果,所以我把它们放在一个数组中,并使用对象EffectBom。在其他函数中使用变量jquery

现在最大的问题是我需要在我的其他功能中使用self2.removeEffect(),但它找不到它!

Thnx for reading - help!

+1

你在这里筑巢是错误的。你在中间有一个额外的'}',在末尾有一个'}'缺少。 – cdhowie 2013-05-01 18:06:16

+0

正确设置代码的格式 – 2013-05-01 18:26:27

回答

0

您需要更改变量的范围。添加

var self2; 

到文件的顶部,改变

var self2 = this; 

self2 = this; 
+1

尽管这样可以解决问题,但我无法提出一个答案,建议使用全局变量,除非绝对必要。 – cdhowie 2013-05-01 18:13:16

+0

您是否因为提问者提出了什么提议? – Ding 2013-05-01 18:14:28

+1

提问人员的代码不完整,并且存在一些嵌套问题,因此此时没有足够的信息来确定正确和最佳的答案。 – cdhowie 2013-05-01 18:15:15