标题:菜鸟:求解析下面代码
只看楼主
小程序员
Rank: 2
等 级:论坛游民
帖 子:41
专家分:16
注 册:2010-3-8
结帖率:50%
已结贴  问题点数:20 回复次数:3 
菜鸟:求解析下面代码
document.getElementsByClassName = function(cl) {
  var retnode = [];
  var myclass = new RegExp('\\b'+cl+'\\b');
  var elem = this.getElementsByTagName('*');
  for (var j = 0; j < elem.length; j++) {
   var classes = elem[j].className;
   if (myclass.test(classes)) retnode.push(elem[j]);
  }
  return retnode;
 }

我搜了一下,javascript的document对象本身并没有getElementsByClassName的方法,不是要定义的吗?不定义怎么使用呀?
还是这句话可以这样理解:function  document.getElementsByClassName (c1){}就是定义一个函数?可是为什么要搞这么复杂,这样子写呢?这样写仅仅是为 了美观吗???
求解,另外,请各位帮我推荐一本javascript的书,要好一点的书,现在市面上很多书都是滥竽充数赚钱的。。。。。
搜索更多相关主题的帖子: javascript function return 
2011-04-22 10:00
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
得分:20 
就是给document对象定义一个名为getElementsByClassName的静态方法
也可以写成这样:
function getElementsByClassName(){
    //code;
}
getElementsByClassName();//调用


var getElementsByClassName = function(){
    //code;
}
getElementsByClassName();//调用


var myObj = {
    getElementsByClassName:function(){
        //code;
    }
}
myObj.getElementsByClassName();//调用

最后一种写法其实和你问的这种是一回事,只不过问题中是直接给现有的document对象去定义方法了,原理一样的。
2011-04-22 16:37
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
得分:0 
书的话,初学者选择比较多的有《javascript宝典》或者《javascript王者归来》等。

个人推荐《javascript王者归来》,作者是51js版主月影,可以说是国内这个领域大牛级别的人物了。内容有浅有深,认真读几遍,还是会让人受益匪浅的


[ 本帖最后由 foktime 于 2011-4-22 16:44 编辑 ]
2011-04-22 16:42
小程序员
Rank: 2
等 级:论坛游民
帖 子:41
专家分:16
注 册:2010-3-8
得分:0 
我慢慢看,谢谢了
2011-04-28 19:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-337530-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032734 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved