DWR中的JS(1)-----$()

$()这个创意确实是从Protoype偷来的,但是Protoype是不是原创,那我就无从得知了。
util.js中$()的实现如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 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中的实现:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 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以上的支持!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值