<script>
var level = ["Kindergarten", "ElemantarySchool"];
var years = [];
years[0] = ["1", "2", "3"];
years[1] = ["1", "2", "3", "4", "5", "6"];
for (var i = 0; i < level.length; i++){
var levelOption = new Option(level[i], i);
document.getElementById("level").appendChild(levelOption);
}
changeyears();
function changeyears() {
var yearsSelect = document.getElementById("years");
while (yearsSelect.childNodes.length > 0) {
yearsSelect.removeChild(yearsSelect.childNodes[0]);
}
var yearsList = years[document.getElementById("level").selectedIndex];
for (var i = 0; i < yearsList.length; i++) {
document.getElementById("years").appendChild(new Option(yearsList[i], i));
}
}
</script>
我不想要值0.我希望两个数组都从值1开始。
<select name="years">
<option value="0">1</option>
<option value="0">1</option>
<option value="0">1</option>
</select>
答案 0 :(得分:1)
数组索引不能从0改变,我们必须写一个逻辑来访问索引的方式,而访问你可以根据你的要求操作它。
为什么数组索引应该从零开始并不是一个微不足道的,它与计算机科学中的有趣概念有关。首先,它与语言设计有很强的关系。例如,在C中,数组的名称本质上是指针,对内存位置的引用,因此表达式array [n]指的是远离起始元素的n元素的内存位置。这意味着索引用作偏移量。数组的第一个元素完全包含在数组引用的内存位置(0个元素之外),因此它应该表示为array [0]。大多数编程语言都是以这种方式设计的,因此从0开始的索引几乎是该语言所固有的。
已经有很多讨论可以找到Why The Array Index Should Start From 0和Why does the indexing start with zero in 'C'?
答案 1 :(得分:1)
你只需要替换(i - &gt;(i + 1)):
<script>
var level = ["Kindergarten", "ElemantarySchool"];
var years = [];
years[0] = ["1", "2", "3"];
years[1] = ["1", "2", "3", "4", "5", "6"];
for (var i = 0; i < level.length; i++){
var levelOption = new Option(level[i], (i+1));
document.getElementById("level").appendChild(levelOption);
}
changeyears();
function changeyears() {
var yearsSelect = document.getElementById("years");
while (yearsSelect.childNodes.length > 0) {
yearsSelect.removeChild(yearsSelect.childNodes[0]);
}
var yearsList = years[document.getElementById("level").selectedIndex];
for (var i = 0; i < yearsList.length; i++) {
document.getElementById("years").appendChild(new Option(yearsList[i], (i+1)));
}
}
</script>