Титановый Javascript: «это».не работает - PullRequest
0 голосов
/ 12 февраля 2012

Ни то, ни другое не работает. Кто-нибудь знает, что происходит ??

Edit: 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 Ответ

2 голосов
/ 12 февраля 2012

Любая проблема JS, связанная с this, вероятнее всего связана со способом вызова функции, использующей this.Хранение ссылки на this в вашей переменной that должно позволить вам ссылаться на нее из вложенных функций, точно так, как вы это уже делаете - при условии, что 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()..

...