You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HTML页面中显示已登录用户的用户名?

登录后在main.html显示当前用户名

我正尝试在main.html文件中打印当前登录用户的用户名,使用的login.html代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Login Form Validation</title>
    <link rel="stylesheet" href="login.css">
    <script defer src="login.js"></script>
</head>
<body>
    <main id="main-holder">
        <h1 id="login-header">Login</h1>
        
        <div id="login-error-msg-holder">
          <p id="login-error-msg">Invalid username <span id="error-msg-second-line">and/or password</span></p>
        </div>
        
        <form id="login-form">
          <input type="text" name="username" id="username-field" class="login-form-field" placeholder="Username">
          <input type="password" name="password" id="password-field" class="login-form-field" placeholder="Password">
          <input type="submit" value="Login" id="login-form-submit">
        </form>
      </main> 
    
</body>
</html>

对应的login.js代码:

const loginForm = document.getElementById("login-form");
const loginButton = document.getElementById("login-form-submit");
const loginErrorMsg = document.getElementById("login-error-msg");


loginButton.addEventListener("click", (e) => {
    e.preventDefault();
    const username = loginForm.username.value;
    const password = loginForm.password.value;

    if (username === "Erkki_Esimerkki" && password === "projekti") {
        window.location.href = "main.html";
       /* location.reload();*/
    } else {
        loginErrorMsg.style.opacity = 1;
    }
})

我需要在用户登录跳转至的main.html的p元素中显示用户名,曾尝试在login.html中编写如下函数并在main.js中调用,但未实现需求:

function getUsername() {
    let username = document.getElementById("username-field").value
    document.getElementById("userinfo").innerHTML += username
}

解决方案

你之前的方法失效是因为跳转到main.html后,login.html的DOM元素已经被销毁,无法再获取输入框里的内容。可以通过localStorage临时存储用户名,实现跨页面传递,具体步骤如下:

1. 修改login.js的登录逻辑

在登录成功时,把用户名存入localStorage:

const loginForm = document.getElementById("login-form");
const loginButton = document.getElementById("login-form-submit");
const loginErrorMsg = document.getElementById("login-error-msg");

loginButton.addEventListener("click", (e) => {
    e.preventDefault();
    const username = loginForm.username.value;
    const password = loginForm.password.value;

    if (username === "Erkki_Esimerkki" && password === "projekti") {
        // 将用户名存入localStorage
        localStorage.setItem("currentUser", username);
        window.location.href = "main.html";
    } else {
        loginErrorMsg.style.opacity = 1;
    }
})

2. 配置main.html的结构

确保main.html中存在用于显示用户名的p元素:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Main Page</title>
    <script defer src="main.js"></script>
</head>
<body>
    <h1>欢迎回来</h1>
    <!-- 用于展示用户名的元素 -->
    <p id="userinfo">当前用户:</p>
</body>
</html>

3. 编写main.js读取并显示用户名

在main.html加载完成后,从localStorage读取用户名并插入到指定元素中:

// 页面加载完成后执行
window.addEventListener("load", () => {
    // 获取存储的用户名
    const currentUser = localStorage.getItem("currentUser");
    const userInfoElement = document.getElementById("userinfo");
    
    // 确保元素存在且用户名不为空
    if (currentUser && userInfoElement) {
        userInfoElement.innerHTML += currentUser;
    }
})

补充说明

  • localStorage存储的数据会长期保留在浏览器中,若需要清除可调用localStorage.removeItem("currentUser")
  • 若希望数据在浏览器关闭后自动清除,可替换为sessionStorage,用法与localStorage完全一致

内容的提问来源于stack exchange,提问作者axesmith99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:10:56