請參閱fixed fiddle here。不過,如果我能理解你爲什麼在那裏有循環,我會更好地幫助你。
$("#submit").click(
function() {
name = $("input[name='name']").val();
money = $("input[name='money']").val();
players.push(new Player(name, money, 0, 0, 0));
$("input[name='name']").val("");
$("input[name='money']").val("");
$("#log").append(players[index++].name + "<br>");
if(index == numOfPlayers) {
$('#submit').prop('disabled', true);
}
});
爲什麼奇怪的空白?
該循環導致您多次打印<br>
而不是一次。您註冊了5個點擊事件處理程序,而不僅僅是一個處理程序,並且每次單擊該按鈕時都會調用所有5個處理程序。
取代循環,只需註冊點擊事件一次,並且當索引達到所需的玩家數量時,提交按鈕將被禁用,因此用戶將無法添加超過5個玩家:
if(index == numOfPlayers) {
$('#submit').prop('disabled', true);
}
爲什麼總是首先打印?
你沒有增加index
變量,這就是爲什麼你總是打印相同的第一個球員。現在,該指數的每次點擊增加(請注意index++
):
$("#log").append(players[index++].name + "<br>");
爲什麼你註冊的點擊監聽器5倍? (當你點擊按鈕時,它被稱爲5次) – Hacketo
閉包和for循環有什麼意義? – Oleander
沒有必要使用迭代。看看[這裏](https:// jsfiddle。net/67etja05 /) –