javascript 函数参数原来是可以缺省的

前几天看 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 


在这里我引用这段代码不是因为要方便自己以后调用,而是发现了一点我从没有用到的方法。

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 


 

posted @ 2010-07-19 09:53  chy1000  阅读(1412)  评论(0编辑  收藏  举报