为什么我只得到数组的最后一个元素作为输出

Why am i only getting the last element of an array as output?

本文关键字:元素 最后一个 输出 数组 为什么      更新时间:2023-09-26

我尝试制作一个登录系统,该系统带有一个用javascript显示哪些用户在线的按钮。我输入一个名字,然后点击登录。之后,我可以选择显示在线用户列表或键入其他名称。我想要的是,当我单击"显示列表"时,会显示一个在线用户列表(我登录的所有名称)。问题是,我在列表中只得到了登录时使用的姓氏。其他所有的名字都没有出现。

如果你运行下面的代码段并尝试登录多个名称,你将只得到你登录的最后一个名称:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>javascript</title>
	<link href="" rel="stylesheet">
	
	<script type="text/javascript">
		var playerlist;
		
		function login(){
			var player = document.getElementById('loginField').value;
			var players = new Array();
			players.push(player);
			playerlist = players.join("<br>");
		}
		
	</script>
</head>
<body>
	<input type="text" id="loginField" placeholder="Username:">
	<input type="button" value="Login" onclick="login()">
	<input type="button" value="Show List" onclick="showlist()"><br>
	<script type="text/javascript">
		function showlist(){
			document.write(playerlist);
		}
	</script>
</body>
</html>

我在这里做错了什么?

提前谢谢。

因为每次调用login方法时都要创建一个新数组。因此,您丢失了先前推送某个字符串的上一个数组。

将数组声明移到方法之外,以便它在对登录方法的多次调用之间保持不变。

var players = []; 
function login()
{
   var player = document.getElementById('loginField').value;
   players.push(player);
   playerlist = players.join("<br>");
}

我还将new Array()更改为[]。两者都是相同的,但是crockford(json的创建者)建议使用[]。感谢@Rayon Dabre的建议。