日期:2014-05-16  浏览次数:20399 次

谁能帮我解释一下,这段JS是什么意思?
function   getObject(objectId)   {
          if(document.getElementById   &&   document.getElementById(objectId))   {
                    //   W3C   DOM
      return   document.getElementById(objectId);
          }  
          else   if   (document.all   &&   document.all(objectId))   {
    //   MSIE   4   DOM
      return   document.all(objectId);
          }  
          else   if   (document.layers   &&   document.layers[objectId])   {
    //   NN   4   DOM..   note:   this   won 't   find   nested   layers
      return   document.layers[objectId];
          }  
          else   {
      return   false;
        }
}  
以上代码是根据ID取得对象,问题是:
1)W3C   DOM、MSIE   4   DOM和NN   4   DOM大致都有什么区别?为什么要分开判断?
2)为什么都写成类似:if(document.getElementById   &&   document.getElementById(objectId))   ,这和直接写成
if(document.getElementById(objectId))   有什么区别?

------解决方案--------------------
1、区别在你的代码里就可以看到

2、差不多就是看看有没有这个方法,没有则返回undefined,而这样的话js会认为是false,后面的不执行,感觉有些地方多余
------解决方案--------------------
这是为浏览器兼容JavaScript代码做的工作,
有的代码IE上可以FF上就不行,
原因就是他们对标准支持的程度和不一致性的问题!
------解决方案--------------------
问题就是IE浏览器并不兼容那些,事实上,也没有一个浏览器能够全部兼容这些,这也是JS代码的编写时一个很值得注意,也很麻烦的问题。