零全零美(www.zzgwt.com)
生活中的很多事情,并不像If...Else那么简单!
posts - 96,comments - 52,trackbacks - 0
$()这个创意确实是从Protoype偷来的,但是Protoype是不是原创,那我就无从得知了。
util.js中$()的实现如下:
var $;
if (!$) {
  $ 
= dwr.util.byId;
}

if (document.getElementById) {
  dwr.util.byId 
= function() {
    
var elements = new Array();
    
for (var i = 0; i < arguments.length; i++) {
      
var element = arguments[i];
      
if (typeof element == 'string') {
        element 
= document.getElementById(element);
      }
      
if (arguments.length == 1) {
        
return element;
      }
      elements.push(element);
    }
    
return elements;
  };
}
else if (document.all) {
  dwr.util.byId 
= function() {
    
var elements = new Array();
    
for (var i = 0; i < arguments.length; i++) {
      
var element = arguments[i];
      
if (typeof element == 'string') {
        element 
= document.all[element];
      }
      
if (arguments.length == 1) {
        
return element;
      }
      elements.push(element);
    }
    
return elements;
  };
}
同样的代码为什么要写两遍呢?就算Mozilla浏览器不支持document.all,难道IE下就不能使用document.getElementById吗?再看:Protoype中的实现:
function $(element) {
  
if (arguments.length > 1) {
    
for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    
return elements;
  }
  
if (typeof element == 'string')
    element 
= document.getElementById(element);
  
return Element.extend(element);
}
两下相比,好像DWR并不比老师高招啊。而DWR文档上的说法是这样可以让更多的浏览器支持!!!document.getElementById()不是ECMA公布的标准吗?

    有点晕,刚才GOOGLE了一下,却发现了这篇文章http://www.cnblogs.com/xiang/archive/2005/10/08/250273.html,一试之下果然如此,看来真的要郑重的对待document.getElementById()和document.all了。
    这篇文章大致是说:在IE中,如果有一个HTML标签的name属性和id属性的值相同,那么document.getElementById抓到的是那个name,而不是id。
    还有就是:
document.getElementById IE5.0以下的不支持!
document.all IE4.0以上的支持!


posted on 2008-04-19 20:40 零全零美 阅读(240) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: