我们之前写的函数并没有给它传参,其实所谓的传参就是将参数传给函数,然后函数在内部做一些处理,那么如何给参数传参呢,其实函数后面的括号里面就是放参数的,下面举个例子:
代码如下 | 复制代码 |
function sum(a, b) { alert(a+b); } sum(12, 5); |
上面的函数中,给sum设置了2个参数a和b,当调用sum时,传递了2个参数给函数,这时a就变为了12,b就变为了5,函数体内的也要变。a和b就起到一个占位符的作用,就好像你和同学去食堂打饭,突然想到早上吃饭看见饭卡里钱不多了,你就给你同学说先帮我排着队,冲完饭卡就过去,等你回来的时候,你就站到同学的位置,当然打饭也是你自己刷卡。上面代码中的数字就是你,字母就是你同学,alert(a+b)就是打饭付钱。当然你同学有名字,那这个a和b肯定也有名字,他们这种参数就叫做形参,就是个形式参数摆在那里,这个sum(12,5)中的参数就是实参,实际参数,也就是实际付钱的你。
有的函数并有形参,或者有的时候要传给函数的参数不确定,那该怎么办呢,其实JS已经帮我们解决了这个问题,那就是每个函数都有自己的arguments对象,这个对象里装的就是传进来的那些参数。看看下面的代码就明白了。
代码如下 | 复制代码 |
function sss() { var sum=0; for(var i=0; i<arguments.length; i++){ sum+=arguments[i]; } alert(sum); } sss(12, 5, 2); |
sss函数我们并没有给设置形参,但在调用的时候依然可以给它传参,而这些参数都在arguments里面,arguments也有length属性,但它不是数组,用alert(typeof arguments)弹出来的是object,可见它的的确确是个对象类型的。
接下来就是操作属性的方法,其实操作属性有2种方法,除了用点来操作外,还有一个就是用方括号来操作,具体的还是来看代码:
代码如下 | 复制代码 |
function setText(name) { var oTxt=document.getElementById('txt1'); oTxt.value='asdfasdfasd'; oTxt['value']='asdfasdf'; } |
上面的代码是设置一个文本输入框的内容,2种方法的最终效果都是一样的,但是又各有优点,用点来操作属性的有点很明显,代码写的短,方便,不用那么多的符号。而方括号设置属性的方法从上面的代码是怎么也看不出有什么有点是吧。那就接着看下面的代码:
代码如下 | 复制代码 |
function setText(name) { var oTxt=document.getElementById('txt1'); oTxt.value='asdfasdfasd'; oTxt[name]='er3523543'; //oTxt.name='sdfqwrf'; 这种方法就成了设置属性了的值了,而不是形参name } setText('value'); |
相信这回大家能看出门道了吧,那就是传参,用方括号设置属性的优点就是可以给函数传参来设置属性。最后就是循环语句,这个就不多说了,和别的语言一摸一样,下面还是依照惯例上练习,望大家看源码后下面留言交流。
第一个循环语句的练习,给所有的DIV加背景色。
代码如下 | 复制代码 |
<style type="text/css"> #demo_main div {float: left; width:100px; height:100px; margin:10px; border:1px solid #000;} .red {background-color:red;} </style> <script type="text/javascript"> window.onload=function (){ var oDiv=document.getElementById('demo_main').getElementsByTagName('div'); for(var i=0;i<oDiv.length;i++){ oDiv[i].className='red'; } }; </script> </head> <body> |
第二个是判断和循环结合的,全选、反选、不选
代码如下 | 复制代码 |
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>全选 反选 不选 - 前端客f2eer.com</title> <style type="text/css"> input {float:left;} </style> <script type="text/javascript"> window.onload=function (){ var oAll=document.getElementById('all'); var oNo=document.getElementById('no'); var oContrary=document.getElementById('contrary'); var oDiv=document.getElementById('div1'); var aIpt=oDiv.getElementsByTagName('input'); oAll.onclick=function (){ for(var i=0;i<aIpt.length;i++){ aIpt[i].checked=true; } }; oNo.onclick=function (){ for(var i=0;i<aIpt.length;i++){ aIpt[i].checked=false; } }; oContrary.onclick=function (){ for(var i=0;i<aIpt.length;i++){ if(aIpt[i].checked==false){ aIpt[i].checked=true; }else{ aIpt[i].checked=false; } } }; }; </script> </head> <body> |
第三个是商品弹出商品介绍
代码如下 | 复制代码 |
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <style> * { padding: 0; margin: 0; } li { list-style: none; } .prompt { width: 710px; height: 301px; background: url(images/bg.gif); margin: 50px auto 0; position: relative; } .prompt ul { position: absolute; top: 241px; } .prompt .list1 { left: 30px; } .prompt li { float: left; width: 103px; height: 30px; line-height: 30px; text-align: center; margin-right: 1px; background: url(images/li_bg.gif) repeat-x; position: relative; cursor: pointer; } </style> <body> |
今天的学习就到这里,文章中如有哪里理解错了,还请大家多多指教。:)