2017-07-07 85 views
1

爲什麼即使與IF檢查,流量仍然會抱怨有可能空值爲什麼流量仍抱怨空值的document.getElementById

if(document && document.getElementById("myID") && document.getElementById("myID").offsetWidth){ 
console.log(document.getElementById("myID").offsetWidth); 
} 

給出了這樣的錯誤

^property `offsetWidth`. Property cannot be accessed on possibly null value 

回答

3

流量也沒辦法要知道第一次打電話給getElementById的成功意味着後面的成功也會成功。對於所有它知道,閱讀offsetWidth屬性會引起getElementById開始下一次調用返回null

你需要存儲的值,例如

const myIdEl = document && document.getElementById("myID"); 

if(myIdEl && myIdEl.offsetWidth) { 
    console.log(myIdEl.offsetWidth); 
} 

這種方式是沒有辦法的myIdEl成爲空已經引用過。

相關問題