0

これは私にとって実際には非常に奇妙です。多次元配列を動的に作成する方法がわかりません。3レベルのドロップダウンリストを作成したいので、値を格納するために3次元配列が必要だと思います。3次元配列を作成するにはどうすればよいですか?

<script language=javascript>

var aCourse=new Array();
aCourse[0]=new Array();
aCourse[1]=new Array();
aCourse[2]=new Array();
aCourse[3]=new Array();

aCourse[0][0]="Select...";
aCourse[1][0]="Select...";
aCourse[1][1]="T Square";
aCourse[1][2]="V Square";
aCourse[1][3]="S Square";
aCourse[1][4]="B Square";
aCourse[1][5]="G Square";
aCourse[2][0]="Select...";
aCourse[2][1]="N Square";
aCourse[2][2]="W Square";
aCourse[3][0]="Select…";
aCourse[3][1]="J Square";
aCourse[3][2]="M Square";

function ChangeCourse()
{
var i,
iCategoryIndex;
iCategoryIndex=document.frm.optCategory.selectedIndex;
iCourseCount=0;
while (aCourse[iCategoryIndex][iCourseCount]!=null)
iCourseCount++;
document.frm.optCourse.length=iCourseCount;
for (i=0;i<=iCourseCount-1;i++)
document.frm.optCourse[i]=new Option(aCourse[iCategoryIndex][i]);
document.frm.optCourse.focus();
}

</script>
<body ONfocus=ChangeCourse()>
<h3>Choose category…&lt;/h3>
<form name="frm">
<p>Category:
<select name="optCategory" size="1" onChange=ChangeCourse()>
<option>Select…&lt;/option>
<option>Soccer</option>
<option>Cricket</option>
<option>Rugby</option>
</select>
</p>
<p>Fields
<select name="optCourse" size="1">
<option>Select…&lt;/option>
</select>
</p>
</form>
4

2 に答える 2

1

唯一の問題が3次元配列の作成である場合、これは機能するはずです。

var aCourse = [];

for(var i = 0; i < dimensionOneSize; i++) {
  aCourse[i] = [];
  for(var k = 0; k < dimensionTwoSize; k++)
    aCourse[i][k] = [];
}

JavaScriptは角かっこを使用した配列の簡略定義をサポートしている[]ため、これらを使用して動的定義をよりクリーンにすることができます。

おそらく短い

また、これが非常にうまく機能するかどうかはわかりませんが、次の可能性があります。

var aCourse = [[[]]];

これまでのところ、私のテストではこれを使用する方法は証明されていませんが、適切なスクリプトとして検証されています。

于 2012-07-02T01:03:55.600 に答える
0

まず、角かっこを使用して配列を初期化することは常に良いこと[]です。

var aCourse = [];

また、JSで多次元配列をシミュレートするには、これは基本的に1つの配列内の配列の数が不確定であるため、次のようにします。

aCourse[0] = [];

または、配列を作成するときに角括弧の内側に配列を作成することもできます。

var aCourse = [
    [], [], []
];

これは次と同等です。

aCourse[0] = [];
aCourse[1] = [];
aCourse[2] = [];
于 2012-07-02T01:00:29.400 に答える