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

基础JavaScript姓名输入验证求助:始终进入else分支

问题排查与修复

问题根源

你在页面加载时就获取了输入框的value并赋值给username,此时输入框是空字符串。之后点击提交按钮时,username始终是初始的空值,不会同步用户输入的内容,所以不管输入什么,都匹配不到if/else if的条件,直接进入else分支。

修复后的JavaScript代码

把获取输入框值的逻辑移到点击事件的回调函数内部,确保每次点击按钮时都能拿到最新的输入内容:

let submit = document.getElementById("submitBtn");
let output = document.getElementById("outputName");

submit.onclick = function(){
    // 每次点击时才获取当前输入框的值
    let username = document.getElementById("textField").value;
    if(username === "Rodney" || username === "rodney"){
        output.innerHTML = username + " access denied";
    }
    else if(username === "Alexander" || username === "alexander"){
        output.innerHTML = username + " access granted";
    }
    else{
        output.innerHTML = username + " not defined";
    }
}

优化建议

可以将输入内容统一转为小写(或大写),同时去除首尾空格,减少重复的条件判断,让代码更简洁:

let submit = document.getElementById("submitBtn");
let output = document.getElementById("outputName");
let textField = document.getElementById("textField"); // 提前获取输入框元素,避免重复查询DOM

submit.onclick = function(){
    let username = textField.value.trim().toLowerCase();
    if(username === "rodney"){
        output.innerHTML = textField.value + " access denied";
    }
    else if(username === "alexander"){
        output.innerHTML = textField.value + " access granted";
    }
    else{
        output.innerHTML = textField.value + " not defined";
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:50:34