5

I have a simple html page with javascript code.

HTML

<!doctype html>
<html>
   <head>
      <meta charset="utf-8" />
      <title>Sink The Battle Ship</title>
   </head>
   <body>
      <h1>Battleship</h1>
      <script src="battleship.js"></script>
   </body>
</html>

JavaScript

var location = Math.floor(Math.random() * 5);
var numberOfGuesses = 0;
var isSunk = false;
var guess;
var guess = prompt("Ready, aim, fire! (enter a number from 0-6):");
var guessedLocation = parseInt(guess);
console.log(guess);
console.log(guessedLocation);

Every time I launch the html in browser, the prompt displays and when I enter a value, it gives me an error "ERR_FILE_NOT_FOUND". It looks like the browser is trying to re-direct to a page with the value I entered. Any idea what is going wrong here? I tried opening the html in different browsers and still no luck.

2
  • 1
    That did not help. Commented Feb 19, 2017 at 3:30
  • Please check my answer, I just commented here to say that, in my 5 years of js development, this is the first time I saw this error, hahaha, I had no idea this could happen but it does make sense. Commented Feb 19, 2017 at 3:35

1 Answer 1

3

The problem is that you are redefining a global variable, called location.

When you declare a variable like this

var location = 1;

is the same as doing this

window.location = 1;

Location is a browser variable used to define in which page (location) the user is in.

You can do two things,

1 - Rename your variable location to: $location, location_2, my_location

var myLocation = Math.floor(Math.random() * 5);

2 - Create a local scope

(function(){
    var location = Math.floor(Math.random() * 5);
    var numberOfGuesses = 0;
    var isSunk = false;
    var guess = prompt("Ready, aim, fire! (enter a number from 0-6):");
    var guessedLocation = parseInt(guess);
    console.log(guess);
    console.log(guessedLocation);
})()

Also, stop re-declaring the variable guess, only use ONE 'var' for every variable name

(function(){
  var location = Math.floor(Math.random() * 5);
  var numberOfGuesses = 0;
  var isSunk = false;
  var guess;
  var guess = prompt("Ready, aim, fire! (enter a number from 0-6):");
  var guessedLocation = parseInt(guess);
  console.log(location);
  console.log(guessedLocation);
  guessedLocation == location ? console.log('you sank me!') : console.log('ha! missed...')
})();
<!doctype html>
<html>
   <head>
      <meta charset="utf-8" />
      <title>Sink The Battle Ship</title>
   </head>
   <body>
      <h1>Battleship</h1>
      <script src="battleship.js"></script>
   </body>
</html>

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks a lot. Solved my problem. I am just starting JavaScript and getting my head around it.
No problems, just remember to mark the best answer as your answer so we can get those sweet reputation points

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.