Reputation: 3
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
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