JS密码强度检测函数switch分支异常问题求助
解决密码强度检测函数的分支跳转异常问题
嘿,我立马就发现你代码里的两个关键问题,正是它们导致了switch分支乱跳的情况:
1. 密码值获取错误,导致强度计算完全偏离预期
你现在获取密码的代码是:
var password = String(document.getElementById("signupScreenPasswordField"));
这行代码是把DOM输入框对象转成了字符串,而不是获取用户实际输入的密码内容!你拿到的会是类似[object HTMLInputElement]这样的固定字符串,完全不是用户输入的密码,这直接导致你计算出来的strength值完全错误。
正确的写法应该是获取输入框的value属性:
var password = document.getElementById("signupScreenPasswordField").value;
2. Switch语句缺少break,导致“贯穿执行”
如果你的switch代码结构没有在每个case末尾加break,就会出现匹配到一个case后,继续执行后续所有case代码的情况——这就是你看到的“strength为0跳case2,1跳case3”的本质:不是跳过去了,是执行完case0后没停止,一路跑到了case2;同理strength=1时跑到case3。
修复后的switch示例:
switch(strength) { case 0: passwordField.style.borderColor = "#ff4444"; // 极弱:红色边框 break; // 必须加break终止当前分支 case 1: passwordField.style.borderColor = "#ffbb33"; // 弱:橙色边框 break; case 2: passwordField.style.borderColor = "#00C851"; // 中等:绿色边框 break; case 3: passwordField.style.borderColor = "#007E33"; // 强:深绿边框 break; }
另外注意你代码里的signupScreenPasswo...是未完成的ID,记得补全重复密码框的ID,避免后续出现找不到元素的错误。
内容的提问来源于stack exchange,提问作者Niks Ļeoņenko
相关产品推荐
相关产品推荐

