深入分析dwr中的DWRUtil.$

 为了更好的使用dwr的util.js,了解 $是必须的

/**
 * Find the element in the current HTML document with the given id or ids
 * @see http://getahead.ltd.uk/dwr/browser/util/$
 */
var $;

//如果浏览器支持document.getElementById那么进入下面的if块
//IE和firefox都是支持的
if (!$ && document.getElementById) {
  //将$定义为一个函数
  $ = function() {
    //定义一个数组
    var elements = new Array();
    //遍历$函数传入的参数
    for (var i = 0; i < arguments.length; i++) {
      var element = arguments[i];
       //如果参数类型为string,那么通过document.getElementById(element);得到一个对象否折无需转化
      if (typeof element == 'string') {
        element = document.getElementById(element);
      }
      
      //如果参数只有一个那么直接返回参数或者document.getElementById(element);函数结束
    
      if (arguments.length == 1) {
        return element;
      }
       //否则将参数对象或经过转化的对象放入数组
      elements.push(element);
    }
    //参数为多个,则返回数组
    return elements;
  }
}
//倘若浏览器不支持document.getElementById,那么判断是否支持document.all的用法,如果支持则进入下面的代码段,代码段里面的内容和上面的if段雷同,就不再赘述了
//IE支持document.all,但在firefox下不好用
else if (!$ && document.all) {
  $ = 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;
  }
}

总结
1) 作者通过使用$函数使代码能跨浏览器支持,也就是说你甚至可以使用$(id)或者$(name)的方式获取对象
    (如果浏览器不支持document.getElementById而只支持document.getElementById,使用$(name)是合适的),作者在源代码也都是这样使用的
2)作者在源代码中大量使用$(x),如果x为string(通常是个id),那么返回该id代表的对象,否则直接返回该对象
3) 注意在页面中必须谨慎使用$,不要使用$作为变量 ,很有可能回覆盖前面的函数定义,到时候可能会有奇怪的现象发生
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值