2

私がやろうとしていること

基本的にスライドショーを制御する関数にパラメーターを渡すことで、いくつかの配列にアクセスしようとしています。関数に渡すパラメーターnameは a<a href=#" name="rebounding" onclick="nextPlayer(this.name)"></a>です。これは、アクセスしようとしている配列の 1 つです。 var reboundingImgs = ['tyson_chandler.png', 'dwight_howard.png', 'zach_randolph.png', 'omer_asik.png', 'nikola_vucevic.png', 'joakim_noah.png'];

問題

画像を変更する関数にパラメーターを渡すと、[index]という配列のインデックスを取得する代わりにを使用するとreboundingImgs[]、 で文字が取得されstring parameterます。たとえばparameter + "Imgs"[index]、インデックスが 2 で、渡すパラメーターが「リバウンド」の場合は「b」になります。渡したパラメーターを使用して、正しい配列から正しい画像を表示するために配列にアクセスする必要があります (scoringImgs[]、reboundingImgs[]、assistImgs[] など、画像を含むいくつかの配列があります)

これが私のコードです

function nextPlayer(typeStatStr) {
    var numImgs = 6;
    var img = document.getElementById("slideImage");
    var imageName = img.name.split("_"); 
    var index = imageName[1];
    if (index == numImgs -1) {
        return;
    } 
    else {
        index++;
    }
    img.src = "..\\nbaart\\" + typeStatStr + "Imgs"[index];
    img.name = "image_" + index;
}

function prevPlayer(typeStatStr) {
    var img = document.getElementById("slideImage");
    var imageName = img.name.split("_");
    var index = imageName[1];
    if (index == 0) {
        return;
    }
    else {
            index--;
    }
    img.src = "..\\nbaart\\" + typeStatStr + "Imgs"[index];
    img.name = "image_" + index;
}
4

3 に答える 3

3

配列の名前を指定してアクセスできるプロパティを持つオブジェクトを作成します。

var imgs = {};

imgs.rebounding = ['tyson_chandler.png', 'dwight_howard.png', 
                   'zach_randolph.png', 'omer_asik.png', 
                   'nikola_vucevic.png', 'joakim_noah.png'];

alert(imgs["rebounding"][0]); // tyson_chandler.png
于 2013-03-02T14:05:33.547 に答える
3

適切な配列をパラメーターとして関数に渡さないのはなぜですか?

nextPlayer(reboundingImgs);

そして、ちょうど:

typeStatStr[index];

とにかく、配列がある種のグローバル変数(ウィンドウスコープ?)である場合、これを行うことができます:

window[typeStatStr + "Imgs"][index];
于 2013-03-02T14:02:11.457 に答える
2

文字列は単なる文字配列なので"Imgs"[index];、「Imgs」の配列のインデックス番目の要素にアクセスしています。たとえば"Imgs"[2] == 'g'

配列の index 番目の要素にアクセスする場合は、次のImgsようにする必要があります。

Imgs[index]; //Without the quotes
于 2013-03-02T14:02:05.907 に答える