[英]Javascript Array not being filled
因此,我試圖自我學習HTML和Jscript,但我無法終生弄清楚我在這段代碼中做錯了什么,它是一個下拉問題列表,詢問用戶他們喜歡什么水果,以及要求做出9個答案,因此此腳本將捕獲這些答案並將其存儲在數組中,但是當它在循環外中斷時,不會顯示最后一個警報,因此我可以看到數組實際上沒有被填充。
我使用警報進行錯誤檢查:)
<script>
function submitInfo(passed){
var Fruit = [];
var myForm = passed+"Form";
//alert("here start"+" "+document.getElementById(myForm).length+" "+myForm);
for (var i = 0; i < document.getElementById(myForm).length; i++) {
//alert("in loop");
var myFruit = passed+"Input"+i;
//alert(myFruit+" "+document.getElementById(myFruit).value);
Fruit.push(document.getElementById(myFruit).value);
// var Fruit[i] = document.getElementById(myFruit).value;
alert(Fruit[i]);
}
alert(Fruit[i]);
}
</script>
預先感謝您的任何幫助,不勝感激
陣列已正確填充,只是您未正確測試它。
原因是因為在循環之后, i
等於document.getElementById(myForm).length
。 因此,當您使用它訪問Fruit
數組時,您將訪問尚未填充的索引。 您可以通過在循環后執行以下操作來證明這一點:
alert(i);
例如,如果document.getElementById(myForm).length
為5
。 您的循環將運行0..4
但在決定中斷循環之前,它仍將增加到5
(它必須增加它以便可以評估條件)。 此時,您的數組中將有5個項目(索引0-4)。 然后,當您調用最后一個警報時, i = 5
,但是Fruit[5]
不存在。
如果要將最后一個警報(循環后)更改為Fruit[0]
它將顯示第一項。 您也可以執行console.log(Fruit)
並檢查控制台中陣列的全部內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.