Проблема с моим addEventListner, возвращающим нуль в JavaScript - PullRequest
1 голос
/ 26 октября 2019

Эй, интересно, сможет ли кто-нибудь помочь мне понять, где я ошибся в этом коде. Я очень новичок в кодировании, так что извините, если он немного шаткийОчень открыт для любых отзывов! Я пытаюсь создать генератор паролей, который запрашивает у вас общее количество символов и какие символы включить.

Функция работала, когда я регистрировал ее, но добавлял ее к кнопке, чтобы генерировать, когда вы щелкаете по ней, что-то немного не в порядке.

Также не так важно, но в моем запросе я не могу понятьКак получить инструкцию else для перезапуска процесса, если они помещают число вне параметров.

var spec = '!@$%^&*()_+';
var low = 'abcdefghijklmnopqrstuvwxyz';
var num = '0123456789';
var upp = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var charLength = prompt("How many characters between 8 - 128?");

if (charLength >= 8, charLength <= 128) {
 var lowChar = confirm("Include lowercase letters?");
 var upChar = confirm("Include uppercase letters?");
 var specChar = confirm("Include special characters?");
 var numChar = confirm("Include numbers?");
}

else {
    var charLength = prompt("How many characters between 8 - 128?");
};
var passwords = document.getElementById("password");
var generate = document.getElementById("btnGen");
var copy = document.getElementById("btnCopy");

generate.addEventListener("click", function(){
    var characters = '';
    lowChar ? characters += low : '';
    upChar ? characters += upp : '';
    specChar ? characters += spec : '';
    numChar ? characters += num : '';

    passwords.value = password(charLength.value, characters)
});


function password(l, characters){
    var pwd = '';
    for(var i = 0; i < l; i++){
    pwd += characters.charAt(Math.floor(Math.random() * characters.length))
    }
    return pwd;
}

Спасибо!

Ответы [ 2 ]

2 голосов
/ 26 октября 2019

В функции eventListener есть две ошибки. Пожалуйста, проверьте новый код. вы неправильно написали «символ персонажа» вместо «символы персонажа». И при вызове функции 'password' первым параметром должен быть charLength вместо charLength.value.

generate.addEventListener("click", function(){
    var characters = ''; /* var character = ''; */
    lowChar ? characters += low : '';
    upChar ? characters += upp : '';
    specChar ? characters += spec : '';
    numChar ? characters += num : '';
    passwords.value = password(charLength /*charLength.value*/, characters)
});

var spec = '!@$%^&*()_+';
var low = 'abcdefghijklmnopqrstuvwxyz';
var num = '0123456789';
var upp = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var charLength = prompt("How many characters between 8 - 128?");

if (charLength >= 8, charLength <= 128) {
 var lowChar = confirm("Include lowercase letters?");
 var upChar = confirm("Include uppercase letters?");
 var specChar = confirm("Include special characters?");
 var numChar = confirm("Include numbers?");
}

else {
    var charLength = prompt("How many characters between 8 - 128?");
};
var passwords = document.getElementById("password");
var generate = document.getElementById("btnGen");
var copy = document.getElementById("btnCopy");

generate.addEventListener("click", function(){
    var characters = '';
    lowChar ? characters += low : '';
    upChar ? characters += upp : '';
    specChar ? characters += spec : '';
    numChar ? characters += num : '';
    passwords.value = password(charLength, characters)
});


function password(l, characters){
    var pwd = '';
    for(var i = 0; i < l; i++){
    pwd += characters.charAt(Math.floor(Math.random() * characters.length))
    }
    return pwd;
}
<html>
<head>

</head>
<body>
<input type="text" id="password"/>

<div>


<span id="btnGen">Generate</span>
<span id="btnCopy">Copy</span>
</div>
</body>
</html>
0 голосов
/ 26 октября 2019

Во-первых, функция. Может быть, попытаться иметь предопределенную функцию? Гораздо прощеНапример, вместо:

generate.addEventListener("click", function(){
    var character = '';
    lowChar ? characters += low : '';
    upChar ? characters += upp : '';
    specChar ? characters += spec : '';
    numChar ? characters += num : '';

    passwords.value = password(charLength.value, characters)
});

try

function onClick() {
    var character = '';
    lowChar ? characters += low : '';
    upChar ? characters += upp : '';
    specChar ? characters += spec : '';
    numChar ? characters += num : '';
    passwords.value = password(charLength.value, characters)
}
generate.addEventListener("click", onClick);

также обычно есть третий аргумент. В вашем случае используйте false. Например:

function onClick() {
    var character = '';
    lowChar ? characters += low : '';
    upChar ? characters += upp : '';
    specChar ? characters += spec : '';
    numChar ? characters += num : '';
    passwords.value = password(charLength.value, characters)
}
generate.addEventListener("click", onClick, false);

Должно работать?

...