Martin Delfs
Martin Delfs

Reputation: 3

If statement doesn't run though conditions are met

I don't get why only the first if statement is running

First I set the currentLevel property to what lies in the session

public currentLevel:any;

this.currentLevel = JSON.parse(sessionStorage.getItem('level'));

This if statement runs and the currentLevel.lvl is set to null

if (!this.currentLevel) {
this.currentLevel = {lvl: null};
}

This if statement doesn't run the first time the method is executed It does however run the second time it is executed and then the entire method works as intended

if (this.currentLevel.lvl == null) {
  sessionStorage.setItem('level', JSON.stringify({lvl: '1'}));
  }
}

FULL CODE

setLevel(){
  this.currentLevel = JSON.parse(sessionStorage.getItem('level'));
  if (!this.currentLevel) {
    this.currentLevel = {lvl: null};
  }

  if (this.currentLevel.lvl == null) {
    sessionStorage.setItem('level', JSON.stringify({lvl: '1'}));
  }else if(this.currentLevel.lvl == '1'){
    sessionStorage.setItem('level', JSON.stringify({lvl: '2'}));
  }else if(this.currentLevel.lvl == '2'){
    sessionStorage.setItem('level', JSON.stringify({lvl: '3'}));
  }else if(this.currentLevel.lvl == '3'){
    sessionStorage.setItem('level', JSON.stringify({lvl: '4'}));
  }else if (this.currentLevel.lvl == '4') {
     sessionStorage.setItem('level', JSON.stringify({lvl: 'complete'}));
  }
  // console.log(this.currentLevel.lvl);

}

Upvotes: 0

Views: 50

Answers (1)

Fals
Fals

Reputation: 6839

1) Don't use ==, always use === to perform logical and type checking.

2) You're not setting the value from the currentLevel after set the sessionStorage

setLevel(){
  this.currentLevel = JSON.parse(sessionStorage.getItem('level'));
  if (!this.currentLevel) {
    this.currentLevel = {lvl: null};
  }

  if (this.currentLevel.lvl === null) {
    sessionStorage.setItem('level', JSON.stringify({lvl: '1'}));
  }else if(this.currentLevel.lvl === '1'){
    sessionStorage.setItem('level', JSON.stringify({lvl: '2'}));
  }else if(this.currentLevel.lvl === '2'){
    sessionStorage.setItem('level', JSON.stringify({lvl: '3'}));
  }else if(this.currentLevel.lvl === '3'){
    sessionStorage.setItem('level', JSON.stringify({lvl: '4'}));
  }else if (this.currentLevel.lvl === '4') {
     sessionStorage.setItem('level', JSON.stringify({lvl: 'complete'}));
  }

  this.currentLevel = JSON.parse(sessionStorage.getItem('level'));
  //      
  //should log {lvl: null} at the first time when It ran
  //
  console.log(this.currentLevel.lvl); 
}

Upvotes: 1

Related Questions