2

我想要做什么

我试图通过将参数传递给基本上控制幻灯片的函数来访问多个数组。我传递给函数的参数是namea 的<a href=#" name="rebounding" onclick="nextPlayer(this.name)"></a>。这是我要访问的数组之一。 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],如果 index 为 2 并且我传入的参数是“rebo​​unding”,则为“b”。我需要使用传入的参数访问数组以显示来自正确数组的正确图像(我有几个包含图像的数组,例如scoringImgs[]、reboundingImgs[]、assistsImgs[] 等)

这是我的代码

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

为什么不将正确的数组作为参数传递给函数?

nextPlayer(reboundingImgs);

然后只是:

typeStatStr[index];

无论如何,如果数组是某种全局变量(窗口范围?),那么你可以这样做:

window[typeStatStr + "Imgs"][index];
于 2013-03-02T14:02:11.457 回答
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 回答
2

String 只是类型字符数组,因此:"Imgs"[index];您正在访问“Imgs”数组的第索引元素。例如"Imgs"[2] == 'g'.

如果你想访问数组的第 index 个元素,Imgs那么你应该这样做:

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