[英]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中。
是的,它是因為你:
0
。 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.