2012-02-14 16 views
0

よろしくお願いします。ここにはいくつかのことがあります。まず、myScrollsというグローバルオブジェクトを作成しようとしています。次に、グローバルオブジェクトの値をjQueryロード関数内に設定しようとしています。第3に、私はロードオブジェクトの外でmyScrollsオブジェクトにアクセスしようとしています。Javascript "for"ループの範囲

私には何が欠けていますか? 'for'ループの範囲は限られていますか? おかげ

myScrolls=new Object(); 

$(window).load(function() { 

    var projectCount = 5; 

    for (var i=0;i<=projectCount;i++) 
    { 
     var singleProject = 'project_' + i; 
     myScrolls[singleProject] = new iScroll(singleProject, horizontalPreferences); 
    } 

}); 

console.log(myScrolls); 
+0

パラメータ 'horizo​​ntalPreferences'は宣言されていないか、または初期化されておらず、参照エラーをスローします。また、表示されるエラーについては説明しません。上記以外のエラーは表示されません。 'myScrolls'はオブジェクトへの参照です。 – RobG

答えて

4

あなたはload、コールバックを実行する前にオブジェクトを読み取るしようとしています。

+0

私はそれが問題の一部だと思っていますが、 'load'コールバックの中に' console.log'を置いてもまだ動作しません。しかし 'console.log'が' for'ループの中に置かれていればうまく動作します。 – coryetzkorn

+0

どうやって動かないのですか?何が起こるのですか? – SLaks

+0

ああ...それを手に入れました。それは今働いている。ありがとう! – coryetzkorn

0

$(window).load()関数は、ウィンドウがロードされるまで待っています。コンソールログもコールバックに含まれていないため、関数が実行する前に実際に実行されます。したがって、コンソールステートメントが実行されるときには、実際には実装されません。

myScrolls=new Object(); 

$(window).load(function() { 

    var projectCount = 5; 

    for (var i=0;i<=projectCount;i++) 
    { 
     var singleProject = 'project_' + i; 
     myScrolls[singleProject] = new iScroll(singleProject, horizontalPreferences); 
    } 

    console.log(myScrolls); //this was out of scope when outside of $(window).load() 

}); 
+0

うーん..それでも動作しません。しかし、 'console.log'が' for'ループの中に置かれていれば、それは行います。 'for'ループ全体が' console.log(myScrolls) 'に進む前に実行されるべきですか? – coryetzkorn

+0

はいそうです。 – Kristian

関連する問題