为什么我只得到数组的最后一个元素作为输出
Why am i only getting the last element of an array as output?
我尝试制作一个登录系统,该系统带有一个用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的建议。
相关文章:
- 表追加而不附加最后一个元素
- 使用querySelector()获取最后一个td元素
- 如何查找流星集合中最后一个元素/对象的id
- 如何在使用Protractor测试时找到ng中继器的最后一个元素
- 在元素数组上循环只会影响最后一个元素
- 推特引导滚动间谍总是选择最后一个元素
- 选择页面上具有特定类的最后一个元素
- 检查 JQuery 每个函数中的最后一个元素
- 保持元素可滚动,直到到达最后一个内容
- 选择表中的最后一个元素
- forEach 仅执行数组的最后一个元素
- JavaScript,数组和函数 - 只有数组的最后一个元素有效
- 插件总是只得到最后一个实例,如何让它适用于多个元素
- jQuery - 选择具有相同 ID 的组的最后一个元素
- 第一个元素和最后一个元素之间的连续循环
- 更改元素HTML,但忽略最后一个子项
- 除了最后一个<td>元素-Jquery
- 在JavaScript数组中查找最后一个元素的计算效率最高的方法
- 将同一个元素追加到两个下拉列表中只会导致最后一个元素被追加
- 如何在jquery中读取Section中的最后一个元素