Mathieu Leclerc
Mathieu Leclerc

Reputation: 41

Error in If statement Javascript

I'm new to this site and currently doing a computer programming class up in ontario, canada. I have a computer programming class and currently making an interactive tic-tac-toe game. I use if statements in a function in order to verify in theres a winner. I have an If and an else if. However only the first if works and does its code. When i try to do the conditions for do into the else if it doesn't works. However, if i swap my else if and if so that both conditions are swapped. again only first first works and second will never work. so to me it sounds like my conditions are good. i dont know if this makes sense lol

function verifie_gagnant()
{
if (document.getElementById("centregauche").firstChild.classList.contains("markX") && 
   document.getElementById("centrecentre").firstChild.classList.contains("markX") &&
   document.getElementById("centredroite").firstChild.classList.contains("markX") || 
   document.getElementById("centregauche").firstChild.classList.contains("markO") && 
   document.getElementById("centrecentre").firstChild.classList.contains("markO") &&
   document.getElementById("centredroite").firstChild.classList.contains("markO"))
{
  document.getElementById("winner").innerHTML= tours + " a ete vaincu!!";
} 
else if (document.getElementById("hautgauche").firstChild.classList.contains("markX") && 
    document.getElementById("hautcentre").firstChild.classList.contains("markX") &&
    document.getElementById("hautdroite").firstChild.classList.contains("markX") || 
    document.getElementById("hautgauche").firstChild.classList.contains("markO") && 
    document.getElementById("hautcentre").firstChild.classList.contains("markO") &&
    document.getElementById("hautdroite").firstChild.classList.contains("markO"))
{
  document.getElementById("winner").innerHTML= tours + " a ete vaincu!!";
}
}

Upvotes: 0

Views: 105

Answers (2)

SSD
SSD

Reputation: 1391

You have an || between && conditions which is evaluating to true in both if and else if.

So even if you swap conditions it always execute first one.

Try putting ( condition1 && condition2) || (condition3 && condition4) in both if and elseif conditions

Example fix. (You need to see where actually you need to group conditions)

function verifie_gagnant()
{
if ((document.getElementById("centregauche").firstChild.classList.contains("markX") && 
   document.getElementById("centrecentre").firstChild.classList.contains("markX") &&
   document.getElementById("centredroite").firstChild.classList.contains("markX")) || 
   (document.getElementById("centregauche").firstChild.classList.contains("markO") && 
   document.getElementById("centrecentre").firstChild.classList.contains("markO") &&
   document.getElementById("centredroite").firstChild.classList.contains("markO")))
{
  document.getElementById("winner").innerHTML= tours + " a ete vaincu!!";
} 
else if ((document.getElementById("hautgauche").firstChild.classList.contains("markX") && 
    document.getElementById("hautcentre").firstChild.classList.contains("markX") &&
    document.getElementById("hautdroite").firstChild.classList.contains("markX")) || 
    document.getElementById("hautgauche").firstChild.classList.contains("markO") && 
    document.getElementById("hautcentre").firstChild.classList.contains("markO") &&
    document.getElementById("hautdroite").firstChild.classList.contains("markO")))
{
  document.getElementById("winner").innerHTML= tours + " a ete vaincu!!";
}
}

This is the first thing you can fix (syntax) after this you need to actually see what is the actual data returned after the single condition is evaluated. Maybe both have same data.

Upvotes: 0

Janvhi
Janvhi

Reputation: 21

By hearing to your problem it looks like in all the cases both the condition are true. Hence which ever condition is first it executes that first skipping the else part. You can test this removing the else and keeping both in separate if condition. You will notice it navigate inside both if condition. You need to change you IF condition. See below to know more on If condition

IF is a Conditional Statements. ... Use if to specify a block of code to be executed, if a specified condition is true. Use else to specify a block of code to be executed, if the same condition is false. Use else if to specify a new condition to test, if the first condition is false.

Upvotes: 1

Related Questions