Javascript 未定义的JS密码生成器

Javascript 未定义的JS密码生成器,javascript,Javascript,我正在制作一个简单的密码生成器,提示用户输入密码的条件,如大小写、符号和数字,然后单击生成密码 我已经设置了处理这些问题的函数,但是,无法获得实际生成的密码 我遇到一个错误,生成的密码未定义 //密码选项输入 const resultEl=document.getElementById(“结果”); var characters=prompt(“密码应该包含多少个字符(8-128)”; var upperCase=prompt(“密码应该包含大写字母吗?”); var lowerCase=pr

我正在制作一个简单的密码生成器,提示用户输入密码的条件,如大小写、符号和数字,然后单击生成密码

我已经设置了处理这些问题的函数,但是,无法获得实际生成的密码

我遇到一个错误,生成的密码未定义

//密码选项输入
const resultEl=document.getElementById(“结果”);
var characters=prompt(“密码应该包含多少个字符(8-128)”;
var upperCase=prompt(“密码应该包含大写字母吗?”);
var lowerCase=prompt(“密码是否应包含小写字母”);
var numbers=prompt(“密码应该包含数字吗?”);
var symbols=prompt(“密码应该包含符号吗?”);
var generateEl=document.getElementById(“生成”);
函数randomFunc(输入){
如果(输入==“hasUpper”){
控制台日志(“上”);
返回getRandomUpper();
}
如果(输入==“hasLower”){
getRandomLower();
控制台日志(“较低”)
}
如果(输入==“hasNumber”){
getRandomNumber();
控制台日志(“数字”)
}
如果(输入==“hasSymbols”){
getRandomSymbol();
控制台日志(“符号”)
}
}
如果(字符数>7&&字符数<129){
var length=parseInt(字符,10);
控制台日志(“长度:”+长度);
}否则{
变量长度=假;
警报(“无效密码长度”);
}
//如果输入为“是”,则返回true
if(大写.toLowerCase()==“是”){
var=true;
控制台日志(“上限:+hassupper”);
}
if(小写.toLowerCase()=='yes'){
var hasLower=真;
console.log(“lower:+hasLower”);
}
if(numbers.toLowerCase()==“是”){
var hasNumbers=true;
控制台日志(“编号:+HASSumbers”);
}
if(symbols.toLowerCase()==“是”){
var hasSymbols=真;
控制台日志(“符号:+hasSymbols”);
}
generateEl.addEventListener('click',function(){
resultEl.innerText=生成密码(hasUpper、hasLower、hasNumbers、hasymbols、length);
console.log(“generatebut”);
});
//生成密码功能
函数生成器密码(hasUpper、hasLower、HasNumber、hasSymbols、length){
//1.初始化密码变量
让generatedPassword='';
const typescont=hasUpper+hasLower+hasNumbers+hasymbols;
//console.log('typescont',typescont);
常数类型R=[{
哈索普
}, {
哈斯洛
}, {
有数字
}, {
哈斯符号
}]
//3.每种类型的循环超长调用生成器功能
for(设i=0;i

密码生成器
生成密码
您的安全密码
生成
  • randomFunc函数仅返回“hasUpper”条件的字符。无论大小写如何,都需要显式返回字符,如下所示:
  • generatePassword函数在每个循环上覆盖generatedPassword变量。因此,即使您从randomFunc返回字符,您的最终密码也只能是1个字符。我修改了它并删除了冗余的finalPassword变量,如下所示:
  • 函数生成密码(hasUpper、hasLower、hasNumbers、hasymbols、length){
    让generatedPassword='';
    const typescont=hasUpper+hasLower+hasNumbers+hasymbols;
    const typesArr=[{hassupper},{hasslower},{hassnumbers},{hasSymbols}]
    for(设i=0;i
    您的
    randomFunc
    在第一种情况下只有返回,其他所有情况下都没有返回。也许这就是问题所在?
    function randomFunc(input) {
        let randomChar;
        if (input === "hasUpper") {
            randomChar = getRandomUpper();
        }
        if (input === "hasLower") {
            randomChar = getRandomLower();
        }
        if (input === "hasNumbers") {
            randomChar = getRandomNumber();
        }
        if (input === "hasSymbols") {
            randomChar = getRandomSymbol();
        }
        return randomChar;
    }
    
    function generatePassword(hasUpper, hasLower, hasNumbers, hasSymbols, length) {
        let generatedPassword = '';
    
        const typesCount = hasUpper + hasLower + hasNumbers + hasSymbols;
    
        const typesArr = [{ hasUpper }, { hasLower }, { hasNumbers }, { hasSymbols }]
    
        for (let i = 0; i < length; i += typesCount) {
            typesArr.forEach(function(type) {
                const funcName = Object.keys(type)[0];
                generatedPassword = generatedPassword + randomFunc(funcName);
            });
        }
    
        return generatedPassword;
    }