简体   繁体   English

Javascript数组键值作为变量

[英]Javascript array key value as a variable

I am trying to set up an array of keys that are strings instead of numbers. 我试图建立一个键数组,这些键是字符串而不是数字。 But, when I try to do so, the array ends up null. 但是,当我尝试这样做时,该数组最终为null。

Here is the function that works (where the keys are just a simple number "i": 这是起作用的函数(其中的键只是一个简单的数字“ 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);
                        }
                    }
                }
            } 

Here is the function I am attempting to use but the resulting array is 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);
                        }
                    }
                }
            } 

I have tried defining "src" in the following ways too: 我也尝试通过以下方式定义“ src”:

var src = arr[i];

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

Does anyone know why it is resulting in null? 有谁知道为什么它会导致null?

Javascript arrays are not good to be used for an enumerated array. Javascript数组不适用于枚举数组。 That is what you are trying to do here. 那就是您要在这里做的。 Use Object instead. 改用Object。

Then you can use a string as a key. 然后,您可以使用字符串作为键。

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 ) ;
                            }
                          }
  }
}

JAVASCRIPT JAVASCRIPT

function loadImages(arr, data, callBack){
                var count = 0;
                var img = new Array();
                for(i=0; i<arr.lenght; i++ ){
                    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);
                            alert(img);
                        }
                    }
                }
            }

Try this.. 尝试这个..

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM