2017-07-10 8 views
0

この質問はHighchartsに直接関連していますが、一般的なJavaScriptやループには本当に関連しています。次のように動的に生成されたJavascriptの変数 'this'

私のコードは次のとおりです。

load:function(){ 
    var series0 = this.series[0]; 
    var series1 = this.series[1]; 
    setTimeout(function(){ 
     series0.addPoint(myjson.list[0].value); 
     series1.addPoint(myjson.list[1].value); 
    }, 1000); 
} 

私が最初に動作するコードの例を見せたかったです。 Highchartsでは、このコードはJSONリストから指定されたインデックスを収集し、それらを既存のチャートに追加します。

しかし、同じアクションを実行するのにforループを実行しようとすると、私はそれをバングリングさせてしまいます。

マイforループの試み:

var update = []; 
    for (i = 0; i < myjson.list.length; i++){ 
     update[i] = this.series[i]; 
     update.addPoint(myjson.list[i].Printvalue); 
    } 

が私のループロジックと間違って何かが明確にあり、まだ私は正確に何を把握することができません。このループのコードを実行しているとき、私はのエラーを取得:

update.addPointを機能ではありません

私の最大の推測では、それは私がthisインスタンスを処理しています方法に関係しています。

+1

は配列です。その配列内の値で呼び出す必要がある配列のaddPointメソッドを呼び出そうとしています。 'update [i] .addPoint(myjson.list [i] .Printvalue)' –

答えて

2

updateは、var update = []と宣言しているため、通常の配列です。通常のJavaScript配列にはaddPointという関数はありません。

私はそれが何であるべきかはわかりませんが、あなたの使用には全く関係ありません。this

this.series内の項目がaddPointが含まれている場合、あなたはこれを使用する場合があります

update[i].addPoint(myjson.list[i].Printvalue); 

update[i]に注意してください。上記のコード内の

+0

正確に私が答えに入れようとしていた道は、それを間違いなく解決した – AGE

+0

に行きます。 –

+0

EDIT:Argh。別の問題があります。私の関数は動作しますが、 'setTimeout'を組み込むときは機能しません。 'undefinedのプロパティ2を読み込めません 'という結果が出ます。つまり、' setTimeout'関数とインデックスに問題があります。 –

関連する問題