Javascript 多维数组-创建表

Javascript 多维数组-创建表,javascript,Javascript,我正在尝试使用多维数组创建一个包含所有黄道带符号的表,下面是它们的年份(12列,n行,日期范围从1912年到2013年) 我在下面有我的代码,这就是我完全陷入困境的地方 我的代码: <script> // declaring a 2D array var signs = new Array(12); for (var ndx = 0; ndx < 12; ndx++) { signs[ndx] = new Array(2); }

我正在尝试使用多维数组创建一个包含所有黄道带符号的表,下面是它们的年份(12列,n行,日期范围从1912年到2013年)

我在下面有我的代码,这就是我完全陷入困境的地方

我的代码:

<script>
    // declaring a 2D array
    var signs = new Array(12);
    for (var ndx = 0; ndx < 12; ndx++) {
        signs[ndx] = new Array(2);
    }

    // The names first
    signs[0][0] = "Rat";
    signs[1][0] = "Ox";
    signs[2][0] = "Tiger";
    signs[3][0] = "Rabbit";
    signs[4][0] = "Dragon";
    signs[5][0] = "Snake";
    signs[6][0] = "Horse";
    signs[7][0] = "Goat";
    signs[8][0] = "Monkey";
    signs[9][0] = "Rooster";
    signs[10][0] = "Dog";
    signs[11][0] = "Pig";

    // Next the image file names
    signs[0][1] = "rat.gif";
    signs[1][1] = "ox.gif";
    signs[2][1] = "tgr.gif";
    signs[3][1] = "rbt.png";
    signs[4][1] = "drgn.png";
    signs[5][1] = "snk.png";
    signs[6][1] = "hrs.gif";
    signs[7][1] = "gt.gif";
    signs[8][1] = "mnky.png";
    signs[9][1] = "rstr.gif";
    signs[10][1] = "dog.gif";
    signs[11][1] = "pig.gif";

    document.write("<h2>");
    document.write("</h2>");

    document.writeln("<table border= '0' width = '100%'>");
    document.writeln("<tr>");


    for (var i = 0; i < SignNames.length; i++) {
        document.writeln("<td>");
        document.writeln(SignNames[i] + "<br />");
        document.writeln("<img src='Images/" + SignImages[i] + "'/>");
        document.writeln("</td>");
    }
    document.writeln("</tr>");

    document.writeln("<tr>");
    for (var i = 1912; i <= new Date().getFullYear(); i++) {
        document.writeln("<td>" + i + "</td>");

        tableCols++;
        if (tableCols == 12) {
            tableCols = 0;
            document.writeln("</tr>");
        }
    }

    document.writeln("</table>");
</script>

//声明二维数组
var符号=新数组(12);
对于(var ndx=0;ndx<12;ndx++){
符号[ndx]=新数组(2);
}
//名字排在第一位
符号[0][0]=“老鼠”;
符号[1][0]=“牛”;
符号[2][0]=“老虎”;
符号[3][0]=“兔子”;
符号[4][0]=“龙”;
符号[5][0]=“蛇”;
符号[6][0]=“马”;
符号[7][0]=“山羊”;
符号[8][0]=“猴子”;
符号[9][0]=“公鸡”;
符号[10][0]=“狗”;
符号[11][0]=“Pig”;
//接下来是图像文件名
符号[0][1]=“rat.gif”;
符号[1][1]=“ox.gif”;
符号[2][1]=“tgr.gif”;
符号[3][1]=“rbt.png”;
符号[4][1]=“drgn.png”;
符号[5][1]=“snk.png”;
符号[6][1]=“hrs.gif”;
符号[7][1]=“gt.gif”;
符号[8][1]=“mnky.png”;
符号[9][1]=“rstr.gif”;
符号[10][1]=“dog.gif”;
符号[11][1]=“pig.gif”;
文件。填写(“”);
文件。填写(“”);
文件。书面形式(“”);
文件。书面形式(“”);
对于(var i=0;i”);
文件。书面形式(“”);
文件。书面形式(“”);
}
文件。书面形式(“”);
文件。书面形式(“”);

对于(var i=1912;i代码中的一个明显问题是,您声明了一个名为
signs
的数组,然后在for循环中尝试以
SignNames
的形式访问它。您需要匹配变量名。您还使用了一个从未声明和初始化过的变量
tableCols
。我想这就是您所看到的申请:

document.writeln("<table border= '0' width = '100%'>");
document.writeln("<tr>");

for (var i = 0; i < signs.length; i++) {
    document.writeln("<td>");
    document.writeln(signs[i][0] + "<br />");
    document.writeln("<img src='Images/" + signs[i][1] + "'/>");
    document.writeln("</td>");
}
document.writeln("</tr>");

document.writeln("<tr>");
var tableCols = 0; // <---- this variable wasn't initialised in your code
for (var i = 1912, d = new Date().getFullYear(); i <= d; i++) {        
    document.writeln("<td>" + i + "</td>");
    if (++tableCols == 12) {
        tableCols = 0;
        document.writeln("</tr>");
    }
}
document.writeln("</table>");

首先,我希望您对数据的定义如下:

var signs = [
  { name: "rat", image: "rat.gif" },
  { name: "ox", image: "ox.gif" },
  ...
  { name: "pig", image: "pig.gif" } // note: no trailing comma here
};
然后,您可以编写
符号[0]。name
来访问该名称。这样更易于阅读


现在唯一需要解决的问题是将
SignNames
替换为
signs
,因为这是数组的名称。

您的确切问题是什么?为什么卡住?请描述我如何获得符号[0][01]我想把名字和图片都放在最上面的一个单元格里,下面的一列是年份。我不太确定怎么做,TerryIt已经解决了。感谢所有帮助过我的人!(我对学习Javascript和Java还不熟悉,所以我很容易被搞糊涂,犯了很多愚蠢的错误)哇,我不确定我在那里用这些名字做什么。不过我知道我离完成这项工作并不遥远。非常感谢您的帮助!不客气。请注意,如果您打开浏览器控制台(Chrome中的ctrl-shift-J,或FF中的-from memory-ctrl-shift-K)然后会为您报告JavaScript错误,您会看到
未捕获引用错误:未定义SignNames
var signs = [
  { name: "rat", image: "rat.gif" },
  { name: "ox", image: "ox.gif" },
  ...
  { name: "pig", image: "pig.gif" } // note: no trailing comma here
};