0

一連のインスタンスを作成したい次のクラスがあります。

function rashnik(size, name) {
    var img = document.createElement('img');
    img.src = "pics/"+name+".jpg";
    img.height = size;
    img.width = size;
    img.id = name;
    d = 300-size;
    img.style.marginBottom = d/2;
    img.style.marginLeft = 50;
    var gal = document.getElementById("gallery");
    gal.appendChild(img);
};

今、私はインスタンスを作成するためにこの関数を作成しました:

function creater(names) {// the argument "names" would be a two-dimensional array 
    for (var a = 0; a < names.length; a++){
        var names[a][0] = new rashnik(names[a][1], names[a][0]); // right here is where I get the error
    }
}

そして、これは私がそれを呼び出す方法です:

var friends = [["adi","300"],["tom","200"],["sleg","100"],["dorc","50"],["dork","25"]];
creater(friends);

問題は、そのvar names[a][0]部分がエラーをスローすることです。これは完全に理解しています。に格納されている文字列と同じ名前のオブジェクトを作成したいのですnames[a][0]が、うまくいきません。それを実現するために私ができることについて誰かが考えを持っていますか?

4

1 に答える 1

1

掃除した。これはあなたが望むことをしていると思います:

  • ループ内に新しいクラス インスタンスを作成するので、それはオブジェクトです。
  • そのオブジェクトに何かを入れます。例としてimgを入れました。
  • 返されるオブジェクトの「キー」として名前を使用します。を使用して、以下のコードのアラートでアクセスしますが、実行するresultsView['adi']こともできましたresultsView.Adi

http://jsfiddle.net/w7wKW/

function rashnik(size, name)
{
var img=document.createElement('img');
img.src = "pics/"+name+".jpg";
img.height = size;
img.width = size;
img.id = name;
d = 300-size;
img.style.marginBottom = d/2;
img.style.marginLeft = 50;
var gal = document.getElementById("gallery");
gal.appendChild(img);

    this.img = img;
    return this;
};


function creater(names)
{//the argument "names" would be a two-dimensional array
    var results = { };
for(var a=0; a<names.length; a++)
{
results[names[a][0]] = new rashnik(names[a][1], names[a][0]);
}

    return results;
}

var friends = [["adi","300"],["tom","200"],["sleg","100"],["dorc","50"],["dork","25"]];
var resultsValue = creater(friends);

alert(resultsValue['adi'].img.src);
于 2012-11-09T22:03:36.613 に答える