天天看点

js第五节-函数参数的传递js第五节-函数参数的传递

js第五节-函数参数的传递

       js的函数参数的传递-->这个参数指的就是数据类型:数字,字符串,对象,函数,未定义。

一、函数参数传递的概念介绍

举例:

1.传数字

function tNum(a){

  alert(a);

}

tNum(4);

2.传字符串

function tString(a){

   alert(a);

}

tString('chenminglv');

3.传对象

function tObject(a,b){

a.onload = function(){

b.getElementsByTagName('input');

}

}

tObject(document);

4.传函数

function tFun(a){

  a(){};

}

tFun(a(){alert('函数传递');});

5.传递一些未定义。

function tUndef(a){

 alert(Number(a));

}

tUndef('');

二、函数参数传递的应用

1.商品加减与统计结果

    这个题的要求是能计算出商品共买了多少件,共花费了多少元,以及其中最贵的商品单价。

①商品共买了多少件?

解题思路:

如果是按照每个li里面的个数来作为件数的话,那么总共的件数就会被每个li的件数覆盖。我们可以用点击数来算总共的件数。

首先,设一个sumNum变量和clickNum的变量(都是全局变量),sumNum是计算总共的值。clickNum计算点击每个li的加按钮,每点击一次,就增加一次,sumNum += clickNum。为了不让其clickNum点击数重复的加,我们在其每次点击的时候都将clickNum变量设为0;加的时候是clickNum++;减的时候是clickNum--;减法的时候一定要有判断条件,不能让其n==0,sumNum -= clickNum;

②共花费了多少元?

设其总共花费的值:var sumPrice = 0(全局变量);

总共花费的值:

   加按钮的时候

   sumPrice = sumPrice + clickNum * price;

   减按钮的时候

   sumPrice = sumPrice - clickNum * price;

③其中最贵的商品单价?

这是一个排序算法题,对于一个排序算法,一般会设置好多数循环进行比较。但是,对于我们这个最贵商品单价的比较,我们好像拿到手感觉到不知从何做起?

思路解析:

     建立数组---既然是比较数,首先要有一堆数进行比较。这个难点在哪?难点在于这个数一会儿存在,一会儿又不存在,不好进行比较。首先,建一个数组var arr = [0,0,0,0,0];因为是5个li,所以事先先建一个数组用来存单价的价格。这个数组也可以动态的建立。var arr = [] ;for(var i = 0; i < aLi.length;i++){arr.push(0);}.我们先建一个静态的数组。

     建立自定义属性(索引值)---有了静态的数组,接下来,我们建立其对应的索引值,用来在点击事件里面给指定的索引值添加价格数字。for(var i =0;i < aLi.length;i++){aLi[i].index = i;}

     进行价格的添加---对于加按钮,我们可以将指定的li.index = price;这个price 已经成功添加到指定索引值的位置。对于减按钮,先要判断其n值是否为0,如果为0,则判断其该位的价格已经不存在了,就表示不能进行价格的比较,但对于数组的长度,我们不好控制,所以,我们将其索引值的位置赋为0 ,li.index = 0;如果n没有小于等于0,这个时候我们继续进行和加法同样的操作。

     进行价格的比较---这个比较就不是太难了,肯定是先全局设一个最大值var maxPrice = 0;然后就是每个数组与最大值进行比较,更换最大值。if(arr[li.index] > maxPrice){maxPrice = arr[li.index];} .在加法当中,如果n为0了,这个时候我们需要重新将maxPrice = 0;并且重新找一个最大值for(var i = 0;i < arr.length;i++){if(arr[i] > maxPrice){maxPrice = arr[i];}

     复制---最后不要忘记oSpan1.innerHTML = maxPrice进行赋值哦,否则页面没有效果,你还以为是程序问题了。

js第五节-函数参数的传递js第五节-函数参数的传递

            图1.商品加减与统计结果

代码分享:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<script>
window.onload = function () {
	var oUl = document.getElementById('list');
	var aLi = oUl.getElementsByTagName('li');
	var sumNum = 0;
    var sumPrice = 0;
	var maxPrice = 0;
    var arr = [0,0,0,0,0];
	for(var i = 0;i < aLi.length;i++){
	   aLi[i].index = i;
	}
	// fnCount ( aLi[0] );
	for ( var i=0; i<aLi.length; i++ ) {
		fnCount ( aLi[i] );
	}
	function fnCount (li) {
		var aBtn = li.getElementsByTagName ('input');
		var oStrong = li.getElementsByTagName ('strong')[0];
		var oEm = li.getElementsByTagName ('em')[0];
		var oSpan = li.getElementsByTagName ('span')[0];
	    var oP = document.getElementsByTagName('p')[0];
		var oStrong1 =oP.getElementsByTagName ('strong')[0];	
		var oEm1 = oP.getElementsByTagName ('em')[0];
		var oSpan1 = oP.getElementsByTagName('span')[0];
		var n = oStrong.innerHTML;		
		var clickNum = 0;	// '0'
		var price = parseFloat(oEm.innerHTML);			// 12.5
		
		aBtn[0].onclick = function () {
			clickNum = 0;
			if ( n > 0 ) {
				n--;
			 clickNum ++;
			}
			sumNum = sumNum - clickNum;
			oStrong.innerHTML = n;	
			oSpan.innerHTML = n*price + '元';
			oStrong1.innerHTML = sumNum ;
			sumPrice -= clickNum *price;
			oEm1.innerHTML = sumPrice + '元';
			
			if(n > 0){
			  arr[li.index] = price;
			  if(arr[li.index] > maxPrice){
			    maxPrice = arr[li.index];
			  }
			}else{
			   arr[li.index] = 0;
			   maxPrice = 0;
			   for(var i = 0;i < arr.length;i++){
			    if(arr[i] > maxPrice){
				maxPrice = arr[i];
				}
			   }
			}
			oSpan1.innerHTML = maxPrice;
		
		};
		aBtn[1].onclick = function () {
            clickNum = 0;
			clickNum ++;
			sumNum = sumNum + clickNum;
			n++;
			oStrong.innerHTML = n;		
			oSpan.innerHTML = n*price + '元'; 	
			oStrong1.innerHTML = sumNum ;
			sumPrice += clickNum *price;	
			oEm1.innerHTML = sumPrice + '元';
		   
		   /* arr[li.index] = price;
			if(arr[li.index] > maxPrice){
		    maxPrice = arr[li.index];
		  */
		   arr[li.index] = price;
			  if(arr[li.index] > maxPrice){
			    maxPrice = arr[li.index];
			  }
			  oSpan1.innerHTML = maxPrice;
		};
	}

	
};
</script>
</head>

<body>

<ul id="list">
	<li>
  	<input type="button" value="-" />
    <strong>0</strong>
  	<input type="button" value="+" />
    单价:<em>12.5元</em>
    小计:<span>0元</span>
  </li>
	<li>
  	<input type="button" value="-" />
    <strong>0</strong>
  	<input type="button" value="+" />
    单价:<em>10.5元</em>
    小计:<span>0元</span>
  </li>
	<li>
  	<input type="button" value="-" />
    <strong>0</strong>
  	<input type="button" value="+" />
    单价:<em>8.5元</em>
    小计:<span>0元</span>
  </li>
	<li>
  	<input type="button" value="-" />
    <strong>0</strong>
  	<input type="button" value="+" />
    单价:<em>8元</em>
    小计:<span>0元</span>
  </li>
	<li>
  	<input type="button" value="-" />
    <strong>0</strong>
  	<input type="button" value="+" />
    单价:<em>14.5元</em>
    小计:<span>0元</span>
  </li>
</ul>

<p>
商品合计共:<strong>0</strong>件,共花费了:<em>0元</em><br />
其中最贵的商品单价是:<span>0</span>元
</p>

</body>
</html>
           

2.修改文本框的值;

这个作业容易走一条弯路,比如我做的用for循环来做的,这样里面的变量就会重了,最后显示的效果就会有问题。后来又用了一个繁琐的方法做的,有效果,但是代码不能重用,应该要考虑代码的重用性。最后用了函数来做,将其相同的部分用函数给包裹起来,然后给其传不同的参数,这样她们的里面的变量也会不同,代码的重用性非常好。

js第五节-函数参数的传递js第五节-函数参数的传递

                                  图2.修改文本框的值

代码分享:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>修改文本框的值(使用了函数)</title>
<script>
window.onload = function(){
//获取属性
	 //var oEditor = document.getElementById('editor');
	 var oUl =document.getElementsByTagName('ul')[0];
	 //var aLi = oUl.getElementsByTagName('li')[0];
	 var aLi = oUl.getElementsByTagName('li');
/*	 var oDiv1 = aLi.getElementsByTagName('div')[0];
	 var oDiv2 = aLi.getElementsByTagName('div')[1];
	 var aP = aLi.getElementsByTagName('p')[0];
	 var aInput = aLi.getElementsByTagName('input')[1];
	 var aStrong = aLi.getElementsByTagName('strong')[0];
	 var aSpan = aLi.getElementsByTagName('span')[0];
 */
  
    for(var i = 0;i < aLi.length;i++){
	    funCn(aLi[i]);
	}
  
  
    function funCn(li){
	   var oEditor = li.getElementsByTagName('input')[0]; 
           var oDiv1 = li.getElementsByTagName('div')[0]; 
	   var oDiv2 = li.getElementsByTagName('div')[1];	
	   var aP = li.getElementsByTagName('p')[0]; 
	   var aInput = li.getElementsByTagName('input')[1];	 
	   var aStrong = li.getElementsByTagName('strong')[0];
	   var aSpan = li.getElementsByTagName('span')[0];
	   
	   oEditor.onclick = function(){
		oDiv1.style.display = 'none';
		oDiv2.style.display = 'block';
	 };
	  aStrong.onclick = function(){
		oDiv1.style.display = 'block';
		oDiv2.style.display = 'none';
		aP.innerHTML = aInput.value;
	 };
	  aSpan.onclick = function(){
	 	oDiv1.style.display = 'block';
		oDiv2.style.display = 'none';	
	 };
	};

};
</script>
<style>
body,ul,h3,input{margin:0;padding:0;font-size:12px;}
li{list-style:none;}
#box{width:600px;margin:30px auto;}
h3{background:green;color:#fff;}
ul{background:#fff;}
li{height:40px;border:1px solid #c0c0c0;}
.box1{display:inline-block;}
li p{display:inline-block;width:140px;padding-left:20px;}
li .editor{display:inline-block;}
li .box2{display:inline-block;display:none;}
li .text1{width:120px;display:inline-block;margin-top:10px;margin-left:10px;}
li .strong1{display:inline-block;color:#00CC33;padding-left:20px;cursor:pointer;}
li .span1{display:inline-block;color:#00CC33;padding-left:20px;font-weight:bold;cursor:pointer;}
</style>
</head>

<body>
<div id="box">
<h3>分类名称</h3>
<ul>

<li>
<div class="box1"><p>梦想创业俱乐部</p> <input type="button" value="编辑" class="editor"/></div>
<div class="box2"><input type="text" class="text1" /> <strong class="strong1">保存</strong> <span class="span1">取消</span></div>
</li>

<li>
<div class="box1"><p>梦想创业俱乐部</p> <input type="button" value="编辑" class="editor"/></div>
<div class="box2"><input type="text" class="text1" /> <strong class="strong1">保存</strong> <span class="span1">取消</span></div>
</li>

</ul>
</div>
</body>
</html>
           

3.搜狐视频记录片列表展示

这个题一定要注意的是,li元素里面的内容千万不能限制了他的高度,否则会导致挤压变形。

js第五节-函数参数的传递js第五节-函数参数的传递

图3.搜狐视频记录片列表展示

代码分享:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>搜狐视频记录片列表展示</title>
<script>
window.onload = function(){
	var oUl = document.getElementsByTagName('ul')[0];
	var aLi = oUl.getElementsByTagName('li');
	var aNews = document.getElementById('news');
	var aNewShow = document.getElementById('newShow');
	//清楚函数
	function clearAll(){
		for(var i = 0;i < aLi.length;i++){
			aLi[i].getElementsByTagName('p')[0].style.display = 'block';
			aLi[i].getElementsByTagName('p')[1].style.display = 'none';
		}
	};
	for(var i = 0;i < aLi.length;i++){
		aLi[i].index = i;
		aLi[i].οnmοuseοver= function(){
			var aP = aLi[this.index].getElementsByTagName('p');
			clearAll();
			//aNews.style.display = 'block';
			//aNewShow.style.display = 'none';
			aP[0].style.display = 'none';
			aP[1].style.display = 'block';
	    };
		
		/*aLi[i].οnmοuseοut= function(){
		aNews.style.display = 'block';
		aNewShow.style.display = 'none';
		var aP = aLi[this.index].getElementsByTagName('p');
		aP[0].style.display = 'block';
		aP[1].style.display = 'none'
	    };*/
	}
};
</script>
<style>
h3,body,ul{margin:0;padding:0;font-size:12px;}
li{list-style:none;}
.clear{zoom:1;}
.clear:after{content:'';display:block;clear:both;}
.wrap{width:256px;border:1px solid #000;margin:30px auto;background:#dee7e7;padding:12px 6px 0 6px;}
.header{height:38px;width:256px;}
.header h3{height:37px;width:134px;color:#295263;padding-left:12px;border-bottom:1px solid #94bdd6;float:left;line-height:50px;font-size:20px;}
.header a{text-decoration:none;float:left;width:34px;height:22px;border:1px solid #94bdd6;color:#185273;line-height:24px;text-align:center;margin-top:14px;}
.a1{color:#000;font-wight:bold;background:#fff;border-bottom:none;}
.content{width:256px;}
li{--height:30px;background:url(img/3.jpg) repeat-x bottom;padding:4px 0 4px 6px;}
.news{}
.num{display:inline-block;width:17px;height:13px;background:#21638c;color:#fff;line-height:17px;text-align:center;font-weight:bold;margin-right:10px;}
.newShow{height:72px;padding-top:8px;font-size:12px;color:#185273;background:#fff;display:none;}
.num1{float:left;width:17px;height:13px;background:#21638c;color:#fff;line-height:17px;text-align:center;font-weight:bold;}
.newShow img{width:81px;height:60px;float:left;margin:0 10px 0 10px;}
.newShow strong{width:108px;height:32px;float:left;margin-top:9px;}
.newShow #play{width:41px;height:22px;float:right;font-weight:none;}
.footer{height:25px;}
.footer a{text-decoration:none;color:#000;line-height:25px;float:right;}
#news{display:none;}
#newShow{display:block;}
</style>
</head>

<body>
<div class="wrap">
<div class="header clear">
<h3>观看排行榜</h3>
<a href='#' class='a1'>每日</a><a href='#' class='a2'>每周</a><a href='#' class='a3'>全部</a>
</div>
<ul class='content'>
<li>
<p class='news'><span class='num'>1</span>解密:关于地球与人类的一千零一问</p>
<p class='newShow clear'><span class='num1'>1</span><img src='img/1.jpg' /><strong>深度解密传奇事件人物,探索未知世界...</strong><img src='img/2.jpg' id="play"/></p>
</li>
<li>
<p class='news'><span class='num'>2</span>解密:关于地球与人类的一千零一问</p>
<p class='newShow clear'><span class='num1'>2</span><img src='img/1.jpg' /><strong>深度解密传奇事件人物,探索未知世界...</strong><img src='img/2.jpg' id="play"/></p>
</li>
<li>
<p class='news'><span class='num'>3</span>解密:关于地球与人类的一千零一问</p>
<p class='newShow clear'><span class='num1'>3</span><img src='img/1.jpg' /><strong>深度解密传奇事件人物,探索未知世界...</strong><img src='img/2.jpg' id="play"/></p>
</li>
<li>
<p class='news'><span class='num'>4</span>解密:关于地球与人类的一千零一问</p>
<p class='newShow clear'><span class='num1'>4</span><img src='img/1.jpg' /><strong>深度解密传奇事件人物,探索未知世界...</strong><img src='img/2.jpg' id="play"/></p>
</li>
<li>
<p class='news'><span class='num'>5</span>解密:关于地球与人类的一千零一问</p>
<p class='newShow clear'><span class='num1'>5</span><img src='img/1.jpg' /><strong>深度解密传奇事件人物,探索未知世界...</strong><img src='img/2.jpg' id="play"/></p>
</li>
<li>
<p class='news'><span class='num'>6</span>解密:关于地球与人类的一千零一问</p>
<p class='newShow clear'><span class='num1'>6</span><img src='img/1.jpg' /><strong>深度解密传奇事件人物,探索未知世界...</strong><img src='img/2.jpg' id="play"/></p>
</li>
<li>
<p class='news'><span class='num'>7</span>解密:关于地球与人类的一千零一问</p>
<p class='newShow clear'><span class='num1'>7</span><img src='img/1.jpg' /><strong>深度解密传奇事件人物,探索未知世界...</strong><img src='img/2.jpg' id="play"/></p>
</li>
<li>
<p class='news' id='news'><span class='num'>8</span>解密:关于地球与人类的一千零一问</p>
<p class='newShow clear'  id='newShow'><span class='num1'>8</span><img src='img/1.jpg' /><strong>深度解密传奇事件人物,探索未知世界...</strong><img src='img/2.jpg' id="play"/></p>
</li>
</ul>
<div class='footer'><a href='#'>更多>></a></div>
</div>
</body>
</html>
           

4.选择卡里套选择卡

这个作业一定要注意的是:先做一个选项卡,然后后面的也就出来了。

js第五节-函数参数的传递js第五节-函数参数的传递

                                                                     图4.选择卡里套选择卡

代码分享:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>选择卡里套选择卡</title>
<script>
window.onload = function(){
	var oLeft = document.getElementById('left');
	var aLi = oLeft.getElementsByTagName('li');
	var aRight = document.getElementById('right');
	var aDiv = aRight.getElementsByTagName('div');
	var  aUl = aRight.getElementsByTagName('ul');
	
	清楚选项卡所有样式
	function clearAll(){
		for(var i = 0;i < aDiv.length;i++){
			aLi[i].style.background = '#e7e7e7';
			aDiv[i].style.display = 'none';
		    aUl[i].style.display = 'none';
		}
	};
	
	
	for(var i = 0;i < aLi.length;i++){
		aLi[i].index = i;
		aLi[i].onmouseover = function(){
		clearAll();
		aLi[this.index].style.background = '#fff';
		aDiv[this.index].style.display = 'block';
		aUl[this.index].style.display = 'block';
		var aImg = aDiv[this.index].getElementsByTagName('img');
		var aLi1 = aUl[this.index].getElementsByTagName('li');
		
		//清楚选项卡里面选项的所有样式
		function clearAll1(){
			for(var i = 0;i < aImg.length;i++){
				aLi1[i].style.background = '#5a5a52';
				aImg[i].style.display = 'none';
			}
		};
		
		for(var i = 0;i < aImg.length;i++){
			aLi1[i].index = i;
			aLi1[i].onmouseover = function(){
				clearAll1();
				aLi1[this.index].style.background = '#ef3163';
			    aImg[this.index].style.display = 'block';
			};
		}
		
	};
	}
	
/*	aLi[i].onclick = function(){
		clearAll();
		aLi[this.index].style.background = '#fff';
		aDiv[this.index].style.display = 'block';
		aUl[this.index].style.display = 'block';
		var aImg = aDiv[this.index].getElementsByTagName('img');
		var aLi1 = aUl[this.index].getElementsByTagName('li');
		
		//清楚选项卡里面选项的所有样式
		function clearAll1(){
			for(var i = 0;i < aImg.length;i++){
				aLi1[i].style.background = '#5a5a52';
				aImg[i].style.display = 'none';
			}
		};
		
		for(var i = 0;i < aImg.length;i++){
			aLi1[i].index = i;
			aLi1[i].onclick = function(){
				clearAll1();
				aLi1[this.index].style.background = '#ef3163';
			    aImg[this.index].style.display = 'block';
			};
		}
		
	};*/
	
};
</script>
<style>
body,ul{margin:0;padding:0;}
.clear{zoom:1;}
.clear:after{content:'';display:block;clear:both;}
li{list-style:none;}
.wrap{width:956px;margin:30px auto;border:1px solid #c0c0c0;}
.left{with:148px;float:left;}
.left li{width:148px;height:74px;text-align:center;padding-top:10px;background:#e7e7e7;border-bottom:1px solid #fff;}
.left li.leftT{background:#fff;}
.right{width:808px;float:left;}
.rightTop{width:808px;height:301px;overflow:hidden;}
.imgT{display:none;}
.rightBottom{width:808px;}
.li1{width:268px;height:38px;margin-right:1px;line-height:38px;color:#fff;font-size:12px;text-align:center;background:#5a5a52;float:left;}
.rightBottom1{display:none;}
.rightT{display:none;}
.liT{background:#ef3163;}
</style>
</head>

<body >
<div class='wrap clear'>

<ul class='left' id="left">
<li class='leftT'><img src='img/1.png' /><br>最热团购</li>
<li><img src='img/2.png' /><br>商城特惠</li>
<li><img src='img/3.png' /><br>名品推荐</li>
<li><img src='img/4.png' /><br>缤纷活动</li>
</ul>

<div class='right' id="right">

<div class='rightTop' >
<img src='img/4.jpg' />
<img src='img/5.jpg' class="imgT"/>
<img src='img/6.jpg'class="imgT" />
</div>
<ul class='rightBottom'>
<li class='li1 liT'>很好看的化妆品</li>
<li class='li1'>什么品牌的化妆品啊</li>
<li class='li1'>快来看一看吧...</li>
</ul>

<div class='rightTop rightT'>
<img src='img/7.jpg' />
<img src='img/5.jpg' class="imgT"/>
<img src='img/6.jpg' class="imgT"/>
</div>
<ul class='rightBottom rightT'>
<li class='li1 liT'>很好看的化妆品1</li>
<li class='li1'>什么品牌的化妆品啊1</li>
<li class='li1'>快来看一看吧1...</li>
</ul>

<div class='rightTop rightT'>
<img src='img/4.jpg' />
<img src='img/5.jpg' class="imgT"/>
<img src='img/7.jpg' class="imgT"/>
</div>
<ul class='rightBottom rightT'>
<li class='li1 liT'>很好看的化妆品2</li>
<li class='li1'>什么品牌的化妆品啊2</li>
<li class='li1'>快来看一看吧2...</li>
</ul>

<div class='rightTop rightT'>
<img src='img/7.jpg' />
<img src='img/5.jpg' class="imgT"/>
<img src='img/6.jpg' class="imgT"/>
</div>
<ul class='rightBottom rightT'>
<li class='li1 liT'>很好看的化妆品3</li>
<li class='li1'>什么品牌的化妆品啊3</li>
<li class='li1'>快来看一看吧3...</li>
</ul>
</div>
</div>
</body>
</html>
           

       今天我们函数参数的传递就讲到这里,下一节我们将会聊聊js的作用域,最后还是希望大家把基础打牢,最好能把陈明吕老师上面写的这些案例都做出来。谢谢大家。

上一篇: 追逐梦想

继续阅读