时间:2021-05-25
先绕开头部很多的if...else(其实就是定义toCamel与getStyle两个函数)-由于浏览器的实现不统一,才造成如此麻烦的情况,回头可以聊聊这些代码。
下面我们在YAHOO.util.Dom类中看看有哪些宝藏。目前思想已经逐步的分裂,我看见个函数说个函数。
//基本上可以认为是document.getElementById的翻版
get:function(el){
//如果已经是HTMLElement,那么就直接返回
if(el&&(el.nodeType||el.item)){
returnel;
}
//如果是字符串,那么就返回有这个ID的Element
if(YAHOO.lang.isString(el)||!el){
returndocument.getElementById(el);
}
//看起来是个数组,循环调用自身,获取Eelement
if(el.length!==undefined){
varc=[];
for(vari=0,len=el.length;i<len;++i){
c[c.length]=Y.Dom.get(el[i]);
}
returnc;
}
returnel;
},这段代码写得非常的精妙。坦白的说,上述代码中的循环体,如果不加思索的话,恐怕就会写成
for(vari=0,len=el.length;i<len;++i){
c[c.length]=document.getElementById(el[i]);
}虽然也能正常工作,但是前面的判断就失去了意义。
继续走马观花,现在看看getElementsByClassName的内部机制。有关getElementsByClassName的详细调用,可以参看YUI文档。
getElementsByClassName:function(className,tag,root,apply){
//获取tag标签,默认为所有(“*”)
tag=tag||'*';
//指定跟节点名
root=(root)?Y.Dom.get(root):null||document;
if(!root){
return[];
}
//初始化节点信息
varnodes=[],
elements=root.getElementsByTagName(tag),
re=getClassRegEx(className);
//滤掉不符合规则的节点
for(vari=0,len=elements.length;i<len;++i){
if(re.test(elements[i].className)){
//你一定很奇怪为什么用nodes.length而不是用i
//仔细考虑下:^)
nodes[nodes.length]=elements[i];
//执行回调函数
if(apply){
apply.call(elements[i],elements[i]);
}
}
}
returnnodes;
},教科书式的DOM节点获取和过滤,初始化数据以及操作数据都显得非常的严谨而且正规,YUI的代码让我有几分的“安全感”。类似的,再来一个getElementsBy函数,相应代码如下
getElementsBy:function(method,tag,root,apply){
//与上述函数相同,略
tag=tag||'*';
root=(root)?Y.Dom.get(root):null||document;
if(!root){
return[];
}
varnodes=[],
elements=root.getElementsByTagName(tag);
for(vari=0,len=elements.length;i<len;++i){
//根据自定义函数返回值判断节点的属性
if(method(elements[i])){
nodes[nodes.length]=elements[i];
if(apply){
apply(elements[i]);
}
}
}
returnnodes;
},OK,今天就先到这里。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
提供的js,css压缩工具yuicompressor2.46打包简介官方网址:http://developer.yahoo.com/yui/compressor
Part.1问题在写一个H5页面时遇到一个需求,头部公告需要滚动变换,需要实现一个走马灯效果Part.2实现我的做法:利用定时器+CSS3变换公告数组的顺序从而
在这里先要感谢yahoo的工程师们无私的将他们的成果奉献出来——yui(yahoo!ui)其实这是它自带的一个例子,我只是熟悉了一下,各种接口调用还是比较方便的
Part.1邮件追踪类工具点评:邮件追踪类的小工具可以帮助我们在日常的客户开发跟进和批量的产品邮件营销中,了解到哪些客户打开过我们的邮件,什么时候打开,打开了几
起因: 今天在阅读snandy大神的读jQuery之五(取DOM元素)时,看到有讲到toArray()方法,具体jQuery代码如下:复制代码代码如下:toA