Kzq*_*qai 3 javascript dom undefined
我经常发现,为避免dom内容出现未定义的错误,我必须执行以下操作:
if("undefined" != typeof parent
&& "undefined" != typeof parent.main
&& "undefined" != typeof parent.main.location){
// Act on a current iframe page from that page's parent location
}
Run Code Online (Sandbox Code Playgroud)
否则,当使用如此大量嵌套的dom对象时,就有可能会得到未定义的错误。有没有更简单的方法来检查这些嵌套对象的属性而不破坏所有内容?
您不需要(在这种情况下也不应该)对支票如此具体。
只是这样做:
if(parent && parent.main && parent.main.location) {
Run Code Online (Sandbox Code Playgroud)
查找null值的属性时,原始代码仍将失败。这可以以更短的方式处理这种情况。
您可以根据需要将最后一个检查更改为更具体,但是在此之前的检查仅需要进行“真实”测试,因为您最终只是在检查对象。
除此之外,您可以创建一个函数来将其缩短一点。如果您值得,则取决于您。
function getNested(obj) {
for (var i = 1; obj && i < arguments.length; ++i) {
obj = obj[arguments[i]]
}
return obj;
}
Run Code Online (Sandbox Code Playgroud)
getNested(parent, "main", "location");
Run Code Online (Sandbox Code Playgroud)
另一个替代方法是:
if(((parent || {}).main || {}).location) {
Run Code Online (Sandbox Code Playgroud)
如果返回错误值,|| {}它将替换一个对象,从而避免错误。
| 归档时间: |
|
| 查看次数: |
1163 次 |
| 最近记录: |