Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

JavaScript

Otto linden
Otto linden
5,857 Points

Uncaught SyntaxError: Unexpected token else (JavaScript)

Hello! What's wrong whit this code? :D else if ( tryAgain.toUpperCase() === "YES" );

(I will put the whole code in the comments! :)

Otto linden
Otto linden
5,857 Points
var correctGuess = false;
var randomNumber = Math.floor(Math.random() * 6 ) + 1;
var guess = prompt('I am thinking of a number between 1 and 6. What is it?');
var tryAgain = prompt("I said a number between 1 and 6! Do you want to try again?");
var reload = alert("Okay! Just reload the site!");

// Ser om de är rätt på första
if ( parseInt(guess) === randomNumber ) {
    correctGuess = true;

// Om int de är rätt sir de om de är större än 6, om det är det så skickas tryAgain
} else if (parseInt(guess) > 6 ); {
   prompt(tryAgain) 

// Om dom svar "yes" på tryAgin så skikcas reload ut
} else if ( tryAgain.toUpperCase() === "YES" ); {
    prompt(reload);

 // Om talet är mindre än 1 så skickas tryAgin ut igen
 } else if ( parseInt(guess) < 1 ); {
    prompt(tryAgain); 

 // Om dom svar "yes" på tryAgin så skikcas reload ut
 } else if (tryAgain.toUpperCase() === 'YES'); {
    prompt(reload);   

// Ser om randomNumber är större en guess isåfall skickas guessMore ut
 } else if ( parseInt(guess) < randomNumber ); { 
    var guessMore = prompt('Try again! The number is higher than ' + guess);

 // Ser om svaret är rätt 
 } else if (parseInt(guessMore) === randomNumber); {
    correctGuess = True;

 // Ser om randomNumber är mindre än guess isåfall skickas guessLess ut
 } else if ( parseInt(guess) > randomNumber ); { 
    var guessLess = prompt("Try again! The number is lower than " + guess);

 // Ser om svaret är rätt
 } if (parseInt(guessLess) === randomNumber); {
    correctGuess = true;   
}

// Om svaret är rätt skickas det här ut
else if ( correctGuess ); {
    document.write('<p>You guessed the number!</p>');

// Om det var fel så skickas det är ut
} else  { 
    document.write('<p>Sorry. The number was ' + randomNumber + ' .</p>');
    } 
(don't mind the "comments" (in swedish)

10 Answers

Jennifer Nordell
seal-mask
STAFF
.a{fill-rule:evenodd;}techdegree
Jennifer Nordell
Treehouse Teacher

Hi there! I feel like you're doing fairly well, but in almost every one of your blocks you have an extra semicolon after your condition. This causes a syntax error.

The first one occurs on line 12. You wrote:

else if (parseInt(guess) > 6 );

But that expression is concluded with a semicolon. This is what is causing your syntax errors. That should be:

else if (parseInt(guess) > 6 )  // Note the removal of the semicolon here.

Hope this helps (och trevlig helg!) :sparkles:

Adam Beer
Adam Beer
11,314 Points

Hi Otto! Jennifer is right. Delete all semicolon after else if statements.

if () {
 // 
} else if () {
 //  ; <- And here use semicolon
} else if () {
 //  ; <- And here use semicolon
}

And so on.

Otto linden
Otto linden
5,857 Points

Thanks! I still have a problem, it says "Uncaught SyntaxError: Unexpected token else script.js:49" But i don't find it! the code is the same (but without the semicolon's) What is wrong? :) (btw 49 is the "} else {")

Daan Schouten
Daan Schouten
14,454 Points

Hi Otto!

The issue is the semicolons in your if statements. In JS syntax, you'll want to use semicolons at the end of statements. An if statement is going to look like

if (condition) { 
 .. code to execute
};

Notice the semicolon at the end, and not after the condition. The if statement ends after the closing bracket }, not after the condition. Remove the semicolons from your code and it will execute just fine.

Best, Daan

Otto linden
Otto linden
5,857 Points
var correctGuess = false;
var randomNumber = Math.floor(Math.random() * 6 ) + 1;
var guess = prompt('I am thinking of a number between 1 and 6. What is it?');
var tryAgain = prompt("I said a number between 1 and 6! Do you want to try again?");
var reload = alert("Okay! Just reload the site!");

// Ser om de är rätt på första
if ( parseInt(guess) === randomNumber ) {
    correctGuess = true;

// Om int de är rätt sir de om de är större än 6, om det är det så skickas tryAgain
} else if (parseInt(guess) > 6 ) {
   prompt(tryAgain) 

// Om dom svar "yes" på tryAgin så skikcas reload ut
} else if ( tryAgain.toUpperCase() === "YES" ) {
    prompt(reload);

 // Om talet är mindre än 1 så skickas tryAgin ut igen
 } else if ( parseInt(guess) < 1 ) {
    prompt(tryAgain); 

 // Om dom svar "yes" på tryAgin så skikcas reload ut
 } else if (tryAgain.toUpperCase() === 'YES') {
    prompt(reload);  

// Ser om randomNumber är större en guess isåfall skickas guessMore ut
 } else if ( parseInt(guess) < randomNumber ) { 
    var guessMore = prompt('Try again! The number is higher than ' + guess);

 // Ser om svaret är rätt 
 } else if (parseInt(guessMore) === randomNumber) {
    correctGuess = true;

 // Ser om randomNumber är mindre än guess isåfall skickas guessLess ut
 } else if ( parseInt(guess) > randomNumber ) { 
    var guessLess = prompt("Try again! The number is lower than " + guess)

 // Ser om svaret är rätt
 } if (parseInt(guessLess) === randomNumber) {
    correctGuess = true;   
}

// Om svaret är rätt skickas det här ut
else if ( correctGuess ); {
    document.write('<p>You guessed the number!</p>');

// Om det var fel så skickas det är ut
} else {
    document.write('<p>Sorry. The number was ' + randomNumber + ' .</p>');
}

This is the code I Have now! Have i missed anyone?

Jennifer Nordell
seal-mask
.a{fill-rule:evenodd;}techdegree
Jennifer Nordell
Treehouse Teacher

Yup! There's still one left. On line 45 you have:

else if ( correctGuess ); {

but you should have:

else if ( correctGuess ) {

Just an extraneous semicolon left over :smiley:

Otto linden
Otto linden
5,857 Points

Thanks! I guess that im blind... xD

Otto linden
Otto linden
5,857 Points

I still have a problem, the "if's" doesn't see if it is True or False it just goes in order as it is int the code! the code:

 var correctGuess = false;
var randomNumber = Math.floor(Math.random() * 6 ) + 1;
var guess = prompt('I am thinking of a number between 1 and 6. What is it?');
var tryAgain = prompt("I said a number between 1 and 6! Do you want to try again?");
var reload = alert("Okay! Just reload the site!");

// Ser om de är rätt på första
if ( parseInt(guess) === randomNumber ) {
    correctGuess = true;

// Om int de är rätt sir de om de är större än 6, om det är det så skickas tryAgain
} else if (parseInt(guess) > 6 ) {
   prompt(tryAgain) 

// Om dom svar "yes" på tryAgin så skikcas reload ut
} else if ( tryAgain.toUpperCase() === "YES" ) {
   prompt(reload);

 // Om talet är mindre än 1 så skickas tryAgin ut igen
 } else if ( parseInt(guess) < 1 ) {
    prompt(tryAgain); 

 // Om dom svar "yes" på tryAgin så skikcas reload ut
 } else if (tryAgain.toUpperCase() === 'YES') {
    prompt(reload);  

// Ser om randomNumber är större en guess isåfall skickas guessMore ut
 } else if ( parseInt(guess) < randomNumber ) { 
    var guessMore = prompt('Try again! The number is higher than ' + guess);

 // Ser om svaret är rätt 
 } else if (parseInt(guessMore) === randomNumber) {
    correctGuess = true;

 // Ser om randomNumber är mindre än guess isåfall skickas guessLess ut
 } else if ( parseInt(guess) > randomNumber ) { 
    var guessLess = prompt("Try again! The number is lower than " + guess)

 // Ser om svaret är rätt
 } if (parseInt(guessLess) === randomNumber) {
    correctGuess = true;   
}

// Om svaret är rätt skickas det här ut
else if ( correctGuess ) {
    document.write('<p>You guessed the number!</p>');

// Om det var fel så skickas det är ut
} else {
    document.write('<p>Sorry. The number was ' + randomNumber + ' .</p>');
}
Adam Beer
Adam Beer
11,314 Points

I am not sure, but try how delete the correctGuess global variable from both places.

Otto linden
Otto linden
5,857 Points

From where do you mean? The first Var and the else if ( correctGuess ) {?

Adam Beer
Adam Beer
11,314 Points

I thought so.

var randomNumber = Math.floor(Math.random() * 6 ) + 1;
var guess = prompt('I am thinking of a number between 1 and 6. What is it?');
var tryAgain = prompt("I said a number between 1 and 6! Do you want to try again?");
var reload = alert("Okay! Just reload the site!");

// Ser om de är rätt på första
if ( parseInt(guess) === randomNumber ) {

// Om int de är rätt sir de om de är större än 6, om det är det så skickas tryAgain
} else if (parseInt(guess) > 6 ) {
   prompt(tryAgain) 

// Om dom svar "yes" på tryAgin så skikcas reload ut
} else if ( tryAgain.toUpperCase() === "YES" ) {
   prompt(reload);

 // Om talet är mindre än 1 så skickas tryAgin ut igen
 } else if ( parseInt(guess) < 1 ) {
    prompt(tryAgain); 

 // Om dom svar "yes" på tryAgin så skikcas reload ut
 } else if (tryAgain.toUpperCase() === 'YES') {
    prompt(reload);  

// Ser om randomNumber är större en guess isåfall skickas guessMore ut
 } else if ( parseInt(guess) < randomNumber ) { 
    var guessMore = prompt('Try again! The number is higher than ' + guess);

 // Ser om svaret är rätt 
 } else if (parseInt(guessMore) === randomNumber) {
    correctGuess = true;

 // Ser om randomNumber är mindre än guess isåfall skickas guessLess ut
 } else if ( parseInt(guess) > randomNumber ) { 
    var guessLess = prompt("Try again! The number is lower than " + guess)

 // Ser om svaret är rätt
 } if (parseInt(guessLess) === randomNumber) {
    correctGuess = true;   
}

// Om svaret är rätt skickas det här ut
else if ( correctGuess ) {
    document.write('<p>You guessed the number!</p>');

// Om det var fel så skickas det är ut
} else {
    document.write('<p>Sorry. The number was ' + randomNumber + ' .</p>');
}
Daan Schouten
Daan Schouten
14,454 Points

Mate, at some point you're gonna have to do some independent debugging w/o asking others.

Otto linden
Otto linden
5,857 Points

I know... But i just need some help xD But i will try to for some hours again now!

Adam Beer
Adam Beer
11,314 Points

Please translate your comments into English. What do you want to do with statements?

Otto linden
Otto linden
5,857 Points

UPDATE: I solved the problem by moving down the varibles tho the place they should come in, but i have gotten a new problem... Error: it only shows the first prompt if you write a number from 1 to 6 same if you write a number below 1 but if you write a number over 6 you get the first two ones! Erro-message:Uncaught TypeError: "Cannot read property 'toUpperCase' of undefined at script.js:17" Code:

var correctGuess = false;
var randomNumber = Math.floor(Math.random() * 6 ) + 1;
var guess = prompt('I am thinking of a number between 1 and 6. What is it?');



// Ser om de är rätt på första
if ( parseInt(guess) === randomNumber ) {
    correctGuess = true;    
} else if ( correctGuess === true ) {
    alert("Congratulations! You guessed the number right!");
// Om int de är rätt sir de om de är större än 6, om det är det så skickas tryAgain
} else if (parseInt(guess) > 6 ) {
   var tryAgain = prompt("I said a number between 1 and 6! Do you want to try again?");

// Om dom svar "yes" på tryAgin så skikcas reload ut
} else if (tryAgain.toUpperCase() === 'YES') {
 var reload = alert("Okay! Just reload the site!");

 // Om talet är mindre än 1 så skickas tryAgin ut igen
 } else if ( parseInt(guess) < 1 ) {
    prompt(tryAgain); 

 // Om dom svar "yes" på tryAgin så skikcas reload ut
 } else if (tryAgain.toUpperCase() === 'YES') {
    alert(reload);  

// Ser om randomNumber är större en guess isåfall skickas guessMore ut
 } else if ( parseInt(guess) < randomNumber ) { 
    var guessMore = prompt('Try again! The number is higher than ' + guess);

 // Ser om svaret är rätt 
 } else if (parseInt(guessMore) === randomNumber) {
    correctGuess = true;

 // Ser om randomNumber är mindre än guess isåfall skickas guessLess ut
 } else if ( parseInt(guess) > randomNumber ) { 
    var guessLess = prompt("Try again! The number is lower than " + guess);

 // Ser om svaret är rätt
 } else if (parseInt(guessLess) === randomNumber) {
    correctGuess = true;   
} // Om svaret är rätt skickas det här ut
    else if ( correctGuess ) {
    document.write('<p>You guessed the number!</p>');

// Om det var fel så skickas det är ut
} else {
    document.write('<p>Sorry. The number was ' + randomNumber + ' .</p>');
}
Otto linden
Otto linden
5,857 Points

Okay Adam! 1. looks if it is right on the first try 2. if not then looks if it is bigger than 6 if so sends out tryAgain 3.if they answear "yes" on tryAgain then reload sends out 4. if the number is samller than 1 tryAgain sends out 5. same as 3. 6.looks if randomNumber is bigger than guess if so guessMore sends out 7. looks if the answear is right 8. looks if randomNumber is smaller than guess if so guessLess sends out 9. looks if the answear is right 10. if so then this sends out 11. if it was wrong this sends out!