JavaScript не случайным образом выбирает имена из определенного списка массивов - PullRequest
0 голосов
/ 10 июля 2019

Я делаю случайное средство выбора имени (а не генератор), и когда я помещаю Алекса в текстовое поле, оно должно выбрать случайное имя из массива randomNicknames, и это работает. Но когда я ввожу имя, отличное от Алекса, оно все равно выбирает случайные имена из массива randomNicknames. Я хочу, чтобы он выбирал имя из массива randomNicknames2, когда пользователь вводит имя, отличное от alex.

let realName = document.getElementById("name");

let randomNicknames = [
    "Noob",
    "Doge",
    "Roblox Bully",
    "Mama",
    "Doodle"
];

let randomNicknames2 = [
    "Ironman",
    "Howard the Alien",
    "Roblox rich kid",
    "Moto Moto",
    "Muhammad the 2nd"
];

let randomNick = randomNicknames[Math.floor(Math.random() * randomNicknames.length)];
let randomNick2 = randomNicknames2[Math.floor(Math.random() * randomNicknames2.length)];

function generate() {
    if (realName == "Alex" || "alex" || "Alexander" || "alexander") {
    document.getElementById("demo").innerHTML = randomNick;
    } else {
        document.getElementById("demo").innerHTML = randomNick2;
    }
}
p {
    font-size: 20px;
}
<!DOCTYPE  html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="style.css">
    <script src="main.js"></script>
    <title>Nickname Generator</title>
</head>

<body>
    Add your first name: <input type="text" id="name" autocomplete="off">
    <button onclick="generate()">Generate!</button>
    <br>
    <br>
    Your nickname: <p id="demo"></p> 
</body>

</html>

Ответы [ 4 ]

0 голосов
/ 10 июля 2019

Проблема была с инициализацией переменной realName.

Добавьте .value в конце:

let realName = document.getElementById("name").value;

Также поместите его в функцию generate()

function generate() {
        let realName = document.getElementById("name").value;
        if (realName === "Alex" || realName === "alex" || realName === "Alexander" || realName === "alexander") {

            let randomNick = randomNicknames[Math.floor(Math.random() * randomNicknames.length)];
            document.getElementById("demo").innerHTML = randomNick;

        } else {

            let randomNick2 = randomNicknames2[Math.floor(Math.random() * randomNicknames2.length)];
            document.getElementById("demo").innerHTML = randomNick2;

        }
        console.log(Math.floor(Math.random() * randomNicknames.length));
    }

Вы также можете использовать console.log(), чтобы проверить, содержит ли переменная правильное значение

console.log(realName);

0 голосов
/ 10 июля 2019

Я думаю, что вы должны написать

    if (realName.value == "Alex" || realName.value == "alex" || realName.value == "Alexander" || realName.value == "alexander") {

Что можно упростить до

    let name = realName.value.toLowerCase();
    if (name  == "alex" || name  == "alexander") {
0 голосов
/ 10 июля 2019
let alexNames = [
    "Alex",
    "alex",
    "Alexander",
    "alexander"
];

let randomNicknames = [
    "Noob",
    "Doge",
    "Roblox Bully",
    "Mama",
    "Doodle"
];

let randomNicknames2 = [
    "Ironman",
    "Howard the Alien",
    "Roblox rich kid",
    "Moto Moto",
    "Muhammad the 2nd"
];

function generate() {
    let realName = document.getElementById("name").value;
    let randomNick = randomNicknames[Math.floor(Math.random() * randomNicknames.length)];
    let randomNick2 = randomNicknames2[Math.floor(Math.random() * randomNicknames2.length)];

   if (alexNames.includes(realName)) {
        document.getElementById("demo").innerHTML = randomNick;
    } else {
        document.getElementById("demo").innerHTML = randomNick2;
    }
}
0 голосов
/ 10 июля 2019

Измените условие if на условие ниже

if (realName == "Alex" || realName == "alex" || realName == "Alexander" ||realName ==  "alexander")

Используйте .value, чтобы получить значение из поля ввода.Без него вы получите весь элемент ввода

let randomNicknames = [
    "Noob",
    "Doge",
    "Roblox Bully",
    "Mama",
    "Doodle"
];

let randomNicknames2 = [
    "Ironman",
    "Howard the Alien",
    "Roblox rich kid",
    "Moto Moto",
    "Muhammad the 2nd"
];

 

function generate() {
let realName = document.getElementById("name").value;

    if (realName == "Alex" || realName == "alex" || realName == "Alexander" ||realName ==  "alexander") {
    document.getElementById("demo").innerHTML = randomNicknames[Math.floor(Math.random() * randomNicknames.length)];
    } else {
        document.getElementById("demo").innerHTML = randomNicknames2[Math.floor(Math.random() * randomNicknames2.length)];
    }
}
p {
    font-size: 20px;
}
<!DOCTYPE  html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="style.css">
    <script src="main.js"></script>
    <title>Nickname Generator</title>
</head>

<body>
    Add your first name: <input type="text" id="name" autocomplete="off">
    <button onclick="generate()">Generate!</button>
    <br>
    <br>
    Your nickname: <p id="demo"></p> 
</body>

</html>
...