2012-02-12 56 views
-4

这个也不行。有谁知道发生了什么?钛JavaScript:“那。”不起作用

编辑: qwerty简称为“qwerty();”当在其他代码段。 它应该是独立的。

编辑:我意识到什么是错的。问题出在我...

function qwerty() { 
..... for loop that changes i ...... 

var that = this; 
this.chara[i] = createlabel..... 

this.chara[i].addEventListener('click', function(e) { 
    var j = e.source.id; 
    alert("hello word"); 
    alert(this.chara[j].width); // I get the error here 
}); 

this.chara[i].addEventListener('doubleclick', function(e) { 
    alert("hello word"); 
    alert(that.chara[i].width); // I get the error here too. 
}); 
} 
+1

什么错误,你得到?以及这个函数是如何被调用的? – ManseUK 2012-02-12 10:18:12

+1

我定义的变量在哪里?事件绑定函数是异步的,所以我的值可能不是你所期望的。 – johnhunter 2012-02-12 10:47:51

回答

2

任何有关this JS问题可能是由于使用this函数被调用的方式。如果在that变量中存储对this的引用,应该让您从嵌套函数中引用它,完全按照您现在所做的操作 - 假设qwerty()以首先将this设置为正确对象的方式调用。 (我个人喜欢称这样的变量self,因为它更准确地反映了变量在做什么。)

然而,在你的函数,你说你在这条线的错误:

that.chara[i].width 

鉴于你说this.chara[i].addEventListener(...)我猜chara[i]变量持有对DOM元素的引用。如果是这种情况,我猜测它是一个没有width属性的元素类型。试试这个:

that.chara[i].style.width 

https://developer.mozilla.org/en/CSS/width

这是我能为你做不约你得到了什么错误和qwerty()功能如何调用更多信息,最好的...

+0

更正我之前的评论。即使在对i进行修正之后仍然存在这个/那个问题。 – 2012-02-12 13:01:50