Titanium Javascript: “that.” does not work

断了今生、忘了曾经 提交于 2019-12-13 11:27:50

问题


Neither this nor that works. Does anyone know what is going on??

Edit: qwerty is simply called as "qwerty();" when in other pieces of code. It is supposed to be indepedent.

Edit: I realize what is wrong. The problem lies with the i...

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:


Any JS problem relating to this is likely due to the way the function using this is called. Storing a reference to this in your that variable should let you reference it from within your nested functions, exactly the way you are doing it already - assuming that qwerty() is called in a way that sets this to the correct object in the first place. (Personally I like to call such a variable self since it more accurately reflects what the variable is doing.)

However, in your function you say you get the error on this line:

that.chara[i].width

Given that you say this.chara[i].addEventListener(...) I'm guessing that the chara[i] variable holds a reference to a DOM element. If that is the case I'm guessing it is an element type that doesn't have a width property. Try this:

that.chara[i].style.width

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

That's the best I can do for you without more information about what error you're getting and how the qwerty() function is called...



来源:https://stackoverflow.com/questions/9247887/titanium-javascript-that-does-not-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!