| Blog信息 |
|
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7656891 建立时间:2006年5月29日 |

| |
|
[Java Open Source]深入分析dwr中的DWRUtil.$ 软件技术, 电脑与网络
lhwork 发表于 2006/6/29 14:10:02 |
| 为了更好的使用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) 注意在页面中必须谨慎使用$,不要使用$作为变量 ,很有可能回覆盖前面的函数定义,到时候可能会有奇怪的现象发生 |
|
|