2017-05-24 101 views
0

我不明白爲什麼只有第一個if語句運行如果語句不運行,雖然條件得到滿足

首先,我設置currentLevel屬性是什麼樣的會議

public currentLevel:any; 

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

這如果語句運行和currentLevel.lvl設置爲null

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

這個if語句不運行首次執行 但它確實運行在S的方法的Econd一次被執行,那麼整個 方法按預期工作

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

全碼

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); 

}

回答

1

1)不要使用==,總是用== =執行邏輯和類型檢查。

2)設置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); 
} 
後,您不是要設置從 currentLevel
相關問題