我希望在JavaScript中按下链接时增加数组中的值
我使用以下代码
<script type="text/javascript">
var i=0;
var numbers = new Array();
function go(val){
numbers[i]=val;
i++;
alert(numbers[i]);
}
</script>
像这样调用函数
<a href='javascript:go(1)' </a>
但警告始终提示我'未定义'
答案 0 :(得分:7)
警报正确 - 在您发出警报之前,您增加了i
。您正在查看刚刚输入的 next 元素。
调用方法一次后,您的数组如下所示:
numbers[0] = 1;
numbers[1] = undefined;
和i == 1
。
再次调用它后,数组看起来像:
numbers[0] = 1;
numbers[1] = 1;
numbers[2] = undefined;
和i == 2
。
希望您可以看到此方法始终提醒undefined
答案 1 :(得分:6)
那是因为你增加了“i”
i++;
在之前你提出警告!因此,“i”将指向要使用的 next 数组插槽,而不是您刚刚填充的插槽。
您可以将警报更改为使用“i-1”
alert(numbers[i - 1]);
答案 2 :(得分:4)
您正在设置numbers[0] = 1
,然后递增i
,后者变为1
,因此alert(numbers[1])
未定义,因为 未定义。
在递增之前执行alert
。此外,使用onclick
甚至更好地不引人注意地将事件处理程序附加到JS中,而不是HTML中。
答案 3 :(得分:4)
是的,它是因为你:
0
。undefined
因为你管理{的方式{1}}指针。顺便说一句,你还希望做什么呢?
答案 4 :(得分:0)
问题甚至与代码不匹配......或者代码与问题不符?
“我想在数组中增加一个值”
您的代码没有递增值,它正在递增索引!
function go(val){
numbers[i]=val;
i++;
}
(其中 i 是下一个未定义数组元素的索引)与
相同numbers.push(val);
如果你需要 i 来等于下一个未定义数组元素的索引,那么
i = numbers.length;
要增加值,您必须首先获得某些数组元素的数值;那么你的函数需要增加哪个值的索引
var numbers = [0,0,0,0];
function go(i){
numbers[i]++;
}
// testing
go(1);
go(3);
go(1);
alert(numbers);
将显示0,2,0,1
但如果您的整个目标是将值放入数组末尾的新元素中,那么只需使用.push()
和.length会告诉你有多少元素;无需增加 i