前几天看 javaEye 时看到一个童鞋写的 getElementsByClassName 函数。代码引自:http://www.javaeye.com/topic/702854
1
<!
DOCTYPE html PUBLIC
"
-//W3C//DTD XHTML 1.0 Transitional//EN
"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
"
>
2 < html xmlns = " http://www.w3.org/1999/xhtml " >
3 < head >
4 < meta http - equiv = " Content-Type " content = " text/html; charset=gb2312 " />
5 < title > 无标题文档 </ title >
6 < script type = " text/javascript " >
7
8 /* *
9 * 根据类名获得元素
10 * 参数说明:
11 * 1、className 类名
12 * 2、tag 元素名 默认所有元素
13 * 3、elm 父元素 默认doucment
14 */
15 document.getElementsByClassName = function(className, tag, elm) {
16 var testClass = new RegExp( " (^|\s) " + className + " (\s|$) " );
17 var tag = tag || " * " ;
18 var elm = elm || document;
19 var elements = (tag == " * " && elm.all) ? elm.all : elm.getElementsByTagName(tag);
20 var returnElements = [];
21 var current;
22 var length = elements.length;
23 for (var i = 0 ; i < length; i ++ ){
24 current = elements[i];
25 if (testClass.test(current.className)){
26 returnElements.push(current);
27 }
28 }
29 return returnElements;
30 }
31
32
33
34 window.onload = function(){
35 var divs = document.getElementsByClassName( " div " );
36 alert(divs.length);
37 for (var i = 0 ; i < divs.length; i ++ ){
38 alert(divs[i].id);
39 }
40 }
41 </ script >
42 </ head >
43
44 < body >
45
46 < div class = " div " id = " div1 " >
47 </ div >
48 < div class = " divvvv " id = " div2 " >
49 < div class = " div " id = " div21 " >
50 </ div >
51 </ div >
52 < div class = " div " id = " div3 " >
53 </ div >
54
55 </ body >
56 </ html >
57
2 < html xmlns = " http://www.w3.org/1999/xhtml " >
3 < head >
4 < meta http - equiv = " Content-Type " content = " text/html; charset=gb2312 " />
5 < title > 无标题文档 </ title >
6 < script type = " text/javascript " >
7
8 /* *
9 * 根据类名获得元素
10 * 参数说明:
11 * 1、className 类名
12 * 2、tag 元素名 默认所有元素
13 * 3、elm 父元素 默认doucment
14 */
15 document.getElementsByClassName = function(className, tag, elm) {
16 var testClass = new RegExp( " (^|\s) " + className + " (\s|$) " );
17 var tag = tag || " * " ;
18 var elm = elm || document;
19 var elements = (tag == " * " && elm.all) ? elm.all : elm.getElementsByTagName(tag);
20 var returnElements = [];
21 var current;
22 var length = elements.length;
23 for (var i = 0 ; i < length; i ++ ){
24 current = elements[i];
25 if (testClass.test(current.className)){
26 returnElements.push(current);
27 }
28 }
29 return returnElements;
30 }
31
32
33
34 window.onload = function(){
35 var divs = document.getElementsByClassName( " div " );
36 alert(divs.length);
37 for (var i = 0 ; i < divs.length; i ++ ){
38 alert(divs[i].id);
39 }
40 }
41 </ script >
42 </ head >
43
44 < body >
45
46 < div class = " div " id = " div1 " >
47 </ div >
48 < div class = " divvvv " id = " div2 " >
49 < div class = " div " id = " div21 " >
50 </ div >
51 </ div >
52 < div class = " div " id = " div3 " >
53 </ div >
54
55 </ body >
56 </ html >
57
在这里我引用这段代码不是因为要方便自己以后调用,而是发现了一点我从没有用到的方法。
getElementsByClassName 有三个参数,但调用的时候不必传进三个参数,你只传进第一个参数就可以了,其它两个参数都是有默认值的。
原来 javascript 函数的参数是可以缺省的,这一点我倒是一直都不知道。
前一阵子这篇博文有一位博客园园友对此发表了“无言” 的评论,我不知他想表达什么意思。应该是想说我菜吧,我承认我的确很菜,学到的 javascript
知识都是很不系统的,到现在还没有真真正正看完一本 Javascript 的书。都是要用到某个知识点,才临时去了解的。至于 javascript 函数的参数是可以缺省的也是最近才知道。哪个人不是一步步走过来的?即使高手也不一定所有的知识点都了解的。但被人这样说的确很影响心情。
我运用到的例子:
1
function
getStopSelectIDs(apmID,func)
2 {
3 var returnArr = [];
4 var stopObj = $name( " stop[] " );
5 for ( var i = 0 ;i < stopObj.length;i ++ )
6 {
7 var id = stopObj[i].getAttribute( " id " );
8 var arr = id.split( " _ " );
9 var attpk_guid = arr[ 1 ];
10 var attpm_id = arr[ 2 ];
11 if (attpk_guid !== " 2 " )
12 continue ;
13 if (attpm_id == apmID)
14 returnArr.push(id);
15 }
16 if (func !== undefined)
17 func(apmID,returnArr);
18 else
19 return returnArr;
20 }
21
22 getStopSelectIDs($id( " apm_id2_ " + num).value,
23 function ()
24 {
25 if (arguments[ 1 ] !== [])
26 {
27 for (key in arguments[ 1 ])
28 {
29 $id(arguments[ 1 ][key]).value = 1 ;
30 }
31 } else {
32 $id( " stop_3_11_ " + num).value = 1 ;
33 }
34 }
35 );
36
37
2 {
3 var returnArr = [];
4 var stopObj = $name( " stop[] " );
5 for ( var i = 0 ;i < stopObj.length;i ++ )
6 {
7 var id = stopObj[i].getAttribute( " id " );
8 var arr = id.split( " _ " );
9 var attpk_guid = arr[ 1 ];
10 var attpm_id = arr[ 2 ];
11 if (attpk_guid !== " 2 " )
12 continue ;
13 if (attpm_id == apmID)
14 returnArr.push(id);
15 }
16 if (func !== undefined)
17 func(apmID,returnArr);
18 else
19 return returnArr;
20 }
21
22 getStopSelectIDs($id( " apm_id2_ " + num).value,
23 function ()
24 {
25 if (arguments[ 1 ] !== [])
26 {
27 for (key in arguments[ 1 ])
28 {
29 $id(arguments[ 1 ][key]).value = 1 ;
30 }
31 } else {
32 $id( " stop_3_11_ " + num).value = 1 ;
33 }
34 }
35 );
36
37