2017-07-07 50 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成为空已经引用过。

相关问题