我尝试使用一个按钮显示登录系统,该按钮显示哪些用户在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>
我在这里做错了什么?
提前谢谢。
答案 0 :(得分:4)
因为每次调用login
方法时都要创建一个新数组。所以你丢失了先前推出一些字符串的数组。
将数组声明移到方法之外,以便它在多次调用登录方法之间保持不变。
var players = [];
function login()
{
var player = document.getElementById('loginField').value;
players.push(player);
playerlist = players.join("<br>");
}
我还将new Array()
更改为[]
。两者都是相同的,但crockford( json的创建者)suggests使用[]
。感谢@Rayon Dabre建议。