JavaScript增加数组中的数字

时间:2010-11-19 17:22:39

标签: javascript

我希望在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> 

但警告始终提示我'未定义'

5 个答案:

答案 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)

是的,它是因为你:

  1. 创建一个完全空的数组,并指向0
  2. 调用该函数时,将当前指针值设置为传入的内容...
  3. ...然后递增指针,所以它现在指向所有元素的末尾。
  4. 现在你会看到数组中被指向的元素, undefined因为你管理{的方式{1}}指针。
  5. 顺便说一句,你还希望做什么呢?

答案 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