簡體   English   中英

JavaScript增加數組中的數字

[英]JavaScript Incrementing a number in an array

我想在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> 

但總是警報提示我'未定義'

警報是正確的 - 在您發出警報之前,您會增加i 您正在查看剛剛輸入的元素之后的下一個元素。

在調用該方法一次后,您的數組如下所示:

numbers[0] = 1;
numbers[1] = undefined;

i == 1

再次調用它之后,數組看起來像:

numbers[0] = 1;
numbers[1] = 1;
numbers[2] = undefined;

i == 2

希望您可以看到此方法將始終警告undefined

那是因為你增加“我”

i++;

你發出警報之前! 因此,“i”將指向要使用的下一個陣列插槽,而不是您剛剛填充的插槽。

您可以將警報更改為使用“i-1”

alert(numbers[i - 1]);

要設置numbers[0] = 1 ,然后遞增i成為1 ,從而alert(numbers[1])是未定義的,因為它未定義的。

在增加之前做alert 此外,使用onclick甚至更好地不引人注意地將事件處理程序附加到JS中,而不是HTML中。

是的,它是因為你:

  1. 創建一個完全空的數組,並將指針設置為0
  2. 調用該函數時,將當前指針值設置為傳入的內容...
  3. ...然后遞增指針,所以它現在指向所有元素的末尾。
  4. 現在你看一下被指向的數組中的元素,由於你管理i指針的方式,它必須undefined

那順便說一下,你還希望做什么呢?

問題甚至與代碼不匹配......或者代碼與問題不符?

“我想在數組中增加一個值”

你的代碼沒有遞增值,它正在遞增索引!

function go(val){
  numbers[i]=val;
  i++;
}

(其中i是下一個未定義數組元素的索引)與...相同

numbers.push(val);

如果你需要等於下一個未定義數組元素的索引那么

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM