0

数値ではなく文字列であるキーの配列を設定しようとしています。しかし、そうしようとすると、配列は null になります。

これが機能する関数です(キーは単純な数字「i」です:

function loadImages(arr, data, callBack){
                var count = 0;
                var img = new Array();

                for(var i in arr ){
                    var src = "\""+arr[i]+"\"";

                    img[i] = new Image();
                    img[i].src = arr[i];
                    img[i].onload = function(){
                        count++;
                        if(count == arr.length){
                            callBack(data, img);
                        }
                    }
                }
            } 

これは私が使用しようとしている関数ですが、結果の配列はnullです:

function loadImages(arr, data, callBack){
                var count = 0;
                var img = new Array();

                for(var i in arr ){
                    var src = "\""+arr[i]+"\"";

                    img[src] = new Image();
                    img[src].src = arr[i];
                    img[src].onload = function(){
                        count++;
                        if(count == arr.length){
                            callBack(data, img);
                        }
                    }
                }
            } 

次の方法でも「src」を定義しようとしました。

var src = arr[i];

var src = "'"+arr[i]+"'";

なぜそれがnullになるのか誰にも分かりますか?

4

2 に答える 2

1

Javascript 配列は、列挙型配列に使用するのには適していません。それがあなたがここでやろうとしていることです。代わりにオブジェクトを使用してください。

次に、文字列をキーとして使用できます。

function loadImages( arr, data, callBack )
{
  var nCount = 0 ;
  var oImg = new Object() ;

  for ( i = 0; i < arr.lenght; i++ )
  {
    var sSrc = "\"" +arr[ i ]+ "\"" ;

    oImg[ sSrc ] = new Image() ;
    oImg[ sSrc ].src = arr[ i ] ;
    oImg[ sSrc ].onload = function()
                          {
                            count++;
                            if ( count == arr.length )
                            {
                              callBack( data, oImg ) ;
                              alert( oImg ) ;
                            }
                          }
  }
}
于 2013-11-13T08:31:31.097 に答える