简单地说,我正在根据当前月份和日期填充数组。我不会复制代码以获取当前月份和日期,因为它正常工作。它适当地返回变量'month'和'day'。我的数组列表包含一年中每一天的项目。数组以...开头
new var content = [[]];
然后数组就像这样......(删节)
content[1,1]= "something for Jan 1";
content[1,2]= "something for Jan 2:;
问题在于我要求......
document.write(content[month,day]);
它忽略月份变量并转到该特定日期的最后一个可用日期变量。
我怀疑我正在尝试做一些不可能的事情,但我希望这只是一个小错误。谢谢你的帮助。
答案 0 :(得分:0)
JavaScript没有多维数组。此外,它的数组从0开始索引,而不是1.并且第一个语句中的new
不属于那里。
所以不要这样:
new var content = [[]];
content[1,1]= "something for Jan 1";
content[1,2]= "something for Jan 2";
您可以使用此:
var content = [ [], [] ];
content[1][1] = "something for Jan 1";
content[1][2] = "something for Jan 2";
或类似的东西。
您应该阅读JavaScript数组语法。听起来你在没有真正知道语言中有效的东西的情况下尝试着。像这样进行实验是好事,但如果你知道什么样的实验可能会成功,那就更好了。
奇怪的是,即使这样的陈述没有达到你想要的效果:
array[ 1, 2 ] = 'foo';
是有效的JavaScript。它有什么作用?好吧,JavaScript有一个逗号运算符,它可以计算逗号两边的表达式,并返回右边表达式的值。所以这个表达式:
1, 2
的值为2.换句话说,array[1,2]
忽略1
并且实际上与array[2]
相同,即它返回数组的第三个元素。
您可以在JavaScript控制台中对此进行测试:
var a = [ [10,20], [30,40] ];
console.log( a[1,1] );
那将打印:
[30, 40]
更新
以下是您在评论中链接到的代码的摘录:
var content = [ [], [] ];
content[1][1]= "placeholder.";
content[1][2]= "placeholder.";
// ...
content[1][30]= "placeholder.";
content[1][31]= "placeholder.";
content[2][1]= "placeholder.";
content[2][2]= "placeholder.";
// ...
content[2][30]= "placeholder.";
content[2][31]= "placeholder.";
content[3][1]= "placeholder.";
content[3][2]= "placeholder.";
// ...
那么让我们来谈谈这段代码到底做了什么。首先,这一行:
var content = [ [], [] ];
这会创建一个包含两个元素的数组,其中每个元素本身都是一个空数组。由于JavaScript将数组从0开始索引,因此这两个元素为content[0]
和content[1]
。没有content[2]
,content[3]
等等。那些不存在。
然后执行此语句:
content[1][1]= "placeholder.";
现在content
包含:
[ [], [ null, "placeholder." ] ];
不是你想要的,是吗?
当你接到这句话时:
content[2][1]= "placeholder.";
您将收到JavaScript错误:
TypeError: Cannot set property '1' of undefined
这是因为如上所述,content[2]
不存在。
看,正如我所说,你需要研究基本的JavaScript概念,比如数组如何工作的细节。有很多很好的教程和参考资料。
还要了解如何使用JavaScript调试器,这样您就可以看到上面的错误,因此您可以交互式地试验代码。
现在回到你想要做的事情。您是否想要为一年中的每个月设置一个数组,每个月的每一天都有什么内容?要初始化数组,我只需要使用一个数组文字。
如果您不介意从零开始编制索引,请使用:
var content = [
[
"January First",
"January Second",
...
],
[
"February First",
"February Second",
...
],
...
];
然后content[0][0]
为"January First"
,content[1][1]
为"February Second"
等。
如果您想在几个月和几天内使用基于1的索引,则可以执行以下操作:
var content = [
null,
[
null,
"January First",
"January Second",
...
],
[
null,
"February First",
"February Second",
...
],
...
];
现在content[1][1]
为"January First"
,content[2][2]
为"February Second"
等。