2012-02-12 7 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

...

that.chara[i].style.width 

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

私はあなたが取得し、どのようにqwerty()関数が呼び出されているのか、エラーの詳細なしであなたのためにできる最善だこと:これを試してみてください取得 ?この関数はどのように呼び出されますか? – ManseUK

+1

変数iはどこに定義されていますか?イベントにバインドされた関数は非同期なので、iの値が期待どおりでない可能性があります。 – johnhunter

答えて

2

であるthisに関するあらゆる JSの問題は、thisを使用して関数が呼び出される方法にありそうです。 thisへの参照をthat変数に格納すると、入れ子関数内から既にそれを行う方法と同じように参照する必要があります。qwerty()が呼び出され、最初に正しいオブジェクトにthisが設定されていると仮定します。 (それはより正確に、変数が何をしているかを反映しているので個人的に私はself、このような変数を呼びたい。)

しかし、あなたの関数では、あなたがこの行にエラーが出ると言う:

ことを考えると
that.chara[i].width 

あなたはthis.chara[i].addEventListener(...)と言いますchara[i]変数はDOM要素への参照を保持していると思います。それは私が推測している場合は、widthプロパティを持たない要素型です。あなたはどのようなエラー

+0

私の前のコメントへの修正。それでも私に訂正した後でもこの/その問題を抱えている。 –

関連する問題