Pyro Gaming
Pyro Gaming

Reputation: 25

Why doesn't my code to print a different message for specific condition work?

My homepage prompts you to enter your name upon entry, but I want it to print a special message when i enter my nickname. Instead, it prints the same message every time.

window.onload = function namePrompt() {
  let person = prompt("Please enter your name", "");
    if (person != null) {
    document.getElementById("name").innerHTML =
    "welcome, " + person + ", to the pyrogaming/covid2009 homepage!";
  }
  else if (person = pyro || Pyro || PYRO) {
    document.getElementById("name").innerHTML =
    "hey, me! hope you've been making substantial changes!";
  }
}

What is wrong with my code?

Upvotes: 0

Views: 85

Answers (3)

mplungjan
mplungjan

Reputation: 177860

person = pyro || Pyro || PYRO is not valid JS

There are three errors. = is assignment, not comparison and you would need quotes and test each one with ===

person === "pyro" || person ==="Pyro" || person === "PYRO"

Instead use toLowerCase and a ternary. In any case stay DRY (Don't Repeat Yourself)

I also recommend eventListener instead of onload

window.addEventListener("DOMContentLoaded", () => {
  const person = prompt("Please enter your name", "");
  if (!person) return; // empty string or null
  const text = person.toLowerCase() === "pyro" ? 
    "hey, me! hope you've been making substantial changes!" : 
    `welcome, ${person}, to the pyrogaming/covid2009 homepage!`;
  document.getElementById("name").innerHTML = text;
})
<span id="name"></span>

Upvotes: 3

IT goldman
IT goldman

Reputation: 19485

window.onload = function namePrompt() {
  let person = prompt("Please enter your name", "");
  var msg
  if (person != null) {
    if (person.toLowerCase() == "pyro") {
      msg =
        "hey, me! hope you've been making substantial changes!";
    } else {
      msg = "welcome, " + person + ", to the pyrogaming/covid2009 homepage!";
    }
    document.getElementById("name").innerHTML = msg
  }
}
<div id="name"></div>

Upvotes: -1

Alexey Zelenin
Alexey Zelenin

Reputation: 730

  1. You need to first check the name if it's yours and after that display the default message
  2. When comparing, use ===, not = - this one is "assign value", not comparing
  3. Use string values instead of just PYRO
  4. I'd also suggest to use toLowerCase method, so you don't need to worry about input case. "Pyro", "PYRO", "pyro" - they all will be the same for comparison

window.onload = function namePrompt() {
  let person = prompt("Please enter your name", "");
  if (person != null) {
      if(person.toLowerCase() === 'pyro') {
        document.getElementById("name").innerHTML =
          "hey, me! hope you've been making substantial changes!";
      } else {
        document.getElementById("name").innerHTML =
          "welcome, " + person + ", to the pyrogaming/covid2009 homepage!";
      }
  }
}
<div id="name"></div>

Upvotes: -1

Related Questions