JS学习第九天总结

1.昨天内容复习

  • 排它思想
    • 上来先干掉所有元素的样式,然后在给自己添加样式
  • 自定义属性
    • 换行会增加宽度
  • 数组方法
    • push
    • pop
    • unshift
    • shift
    • join();把数组转成字符串
    • splice();涵盖了slice功能,记这个就行了
  • 字符串转数组,split(‘字符串中符号’),符号必须统一;

2.昨天作业讲解

基础版:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			*{
				margin:0px;
				padding:0px;
				font-size:18px;
			}
			#container{
				width:530px;
				height:440px;
				margin:50px auto;
				border:1px solid black;	
				padding:20px;	
			}
			h2{
				color:#666;
				font-size:24px;
				margin-bottom: 20px;
			}
			#centerLeft{
				width:50px;
				height:50px;
				background:url(img/星座精灵图.png) no-repeat;
				float:left;
				margin:0px 50px;
			}
			select{
				padding-left:10px;
				width:200px;
				height:30px;
				font-size:18px;
				display: block;
				margin-bottom: 10px;
			}
			#yunshi{
				display: block;
				float:left;
			}
			#star{
				width:80px;
				height:13px;
				float:left;
				position: relative;
			}
			#lightstar{
				display:block;
				width:80px;
				height:13px;
				float:left;
				background:url(img/星星图.png) left bottom no-repeat;
				position: absolute;
				top:5px;
				left:0;
			}
			#blackstar{
				display:block;
				width:80px;
				height:13px;
				float:left;
				background:url(img/星星图.png) left top no-repeat;
				margin-top:5px;
			}			
			#clear{
				clear:both;
			}
			p{
				margin-top:20px;
				text-indent:2em;
			}
		</style>
	</head>
	<body>
		<div id="container">
			<div id="tops">
				<h2>星座运势</h2>
			</div>
			<div id="centers">
				<div id="centerLeft"></div>
				<div id="centerRight">
					<select id="sec">
						<option value="0">白羊座03.21-04.19</option>
						<option value="1">金牛座04.20-05.20</option>
						<option value="2">双子座05.21-06.21</option>
						<option value="3">巨蟹座06.22-07.22</option>
						<option value="4">狮子座07.23-08.22</option>
						<option value="5">处女座08.23-09.22</option>
						<option value="6">天秤座09.23-10.23</option>
						<option value="7">天蝎座10.24-11.22</option>
						<option value="8">射手座 11.23-12.21</option>
						<option value="9">摩羯座12.22-01.19</option>
						<option value="10">水瓶座01.20-02.18</option>
						<option value="11">双鱼座02.19-03.20</option>
					</select>
					<span id="yunshi">今日运势:</span>
					<div id="star">
						<span id="lightstar"></span>
						<span id="blackstar"></span>
					</div>
					<div id="clear">						
					</div>
				</div>
			</div>
			<div id="bottoms">
				<p id="content">今天的事业运势不错,虽然容易有一些竞争者或其他小人出现在事业中,但他们反而会成就自己的事业。今天仍然适合外出学习进修,提升自己。</p>
			</div>
		</div>
		<script type="text/javascript">
			function $id(id){
				return document.getElementById(id);
			}
			function change(val,num,str){
				centerLeft.style.backgroundPositionY=(-val*50)+"px";
				lightstar.style.width=(num*8)+"px";
				content.innerHTML=str;
			}
			var sec=$id("sec");
			var centerLeft=$id("centerLeft");
			var lightstar=$id("lightstar");
			var content=$id("content");
			sec.function(){
				switch (this.value){
					case "0":
						change(this.value,10,"今天的事业运势不错,虽然容易有一些竞争者或其他小人出现在事业中,但他们反而会成就自己的事业。今天仍然适合外出学习进修,提升自己。");
						break;
					case "1":
						change(this.value,9,"外出容易遇到一些小麻烦,但终能化解,转不利为有利。");
						break;
					case "2":
						change(this.value,6,"会专注于事业方面,虽然在事业工作方面,会有些迷茫,这天感情方面运势也不错。");
						break;
					case "3":
						change(this.value,8,"这天巨蟹会很忙碌,但会忙得非常愉快,即使平时不太爱运动的巨蟹,这天也可能很强活动一下自己。");
						break;
					case "4":
						change(this.value,6,"快乐的一天,也有迁移运势,工作和健康方面的运势也都还不错。");
						break;
					case "5":
						change(this.value,8,"这天适合多听取一些朋友,对自己家庭,或者房子装修布置的建议。");

						break;
					case "6":
						change(this.value,5,"有利于学习考试,与上司的沟通也会比较良好,总体比较愉快。");
						break;
					case "7":
						change(this.value,2,"财运很好的一天,讲话比较严谨大气,也适合多一些娱乐活动。");
						break;
					case "8":
						change(this.value,1,"不错的一天,财运仍然较好,会因为平时不太熟悉的一些晚辈帮助,或者因为娱乐活动而获利。");
						break;
					case "9":
						change(this.value,3,"有朋友来帮助自己,让自己信心满满,心理层面,也是比较愉悦。");
						break;
					case "10":
						change(this.value,6,"暗中会得人帮助,也容易得到亲戚,邻居的一些帮助,这天财运上也还可以。");
						break;
					case "11":
						change(this.value,1,"社交运仍然强旺,内心也变得强大起来,也会因为事业方面的事情,心情愉快。");
						break;
					default:
						break;
				}
			}
		</script>
	</body>
</html>

优化版:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			*{
				margin:0px;
				padding:0px;
				font-size:18px;
			}
			#container{
				width:530px;
				height:440px;
				margin:50px auto;
				border:1px solid black;	
				padding:20px;	
			}
			h2{
				color:#666;
				font-size:24px;
				margin-bottom: 20px;
			}
			#centerLeft{
				width:50px;
				height:50px;
				background:url(img/星座精灵图.png) no-repeat;
				float:left;
				margin:0px 50px;
			}
			select{
				padding-left:10px;
				width:200px;
				height:30px;
				font-size:18px;
				display: block;
				margin-bottom: 10px;
			}
			#yunshi{
				display: block;
				float:left;
			}
			#star{
				width:80px;
				height:13px;
				float:left;
				position: relative;
			}
			#lightstar{
				display:block;
				width:80px;
				height:13px;
				float:left;
				background:url(img/星星图.png) left bottom no-repeat;
				position: absolute;
				top:5px;
				left:0;
			}
			#blackstar{
				display:block;
				width:80px;
				height:13px;
				float:left;
				background:url(img/星星图.png) left top no-repeat;
				margin-top:5px;
			}			
			#clear{
				clear:both;
			}
			p{
				margin-top:20px;
				text-indent:2em;
			}
		</style>
	</head>
	<body>
		<div id="container">
			<div id="tops">
				<h2>星座运势</h2>
			</div>
			<div id="centers">
				<div id="centerLeft"></div>
				<div id="centerRight">
					<select id="sec">
						<option value="0">白羊座03.21-04.19</option>
						<option value="1">金牛座04.20-05.20</option>
						<option value="2">双子座05.21-06.21</option>
						<option value="3">巨蟹座06.22-07.22</option>
						<option value="4">狮子座07.23-08.22</option>
						<option value="5">处女座08.23-09.22</option>
						<option value="6">天秤座09.23-10.23</option>
						<option value="7">天蝎座10.24-11.22</option>
						<option value="8">射手座 11.23-12.21</option>
						<option value="9">摩羯座12.22-01.19</option>
						<option value="10">水瓶座01.20-02.18</option>
						<option value="11">双鱼座02.19-03.20</option>
					</select>
					<span id="yunshi">今日运势:</span>
					<div id="star">
						<span id="lightstar"></span>
						<span id="blackstar"></span>
					</div>
					<div id="clear">						
					</div>
				</div>
			</div>
			<div id="bottoms">
				<p id="content">今天的事业运势不错,虽然容易有一些竞争者或其他小人出现在事业中,但他们反而会成就自己的事业。今天仍然适合外出学习进修,提升自己。</p>
			</div>
		</div>
		<script type="text/javascript">
			function $id(id){
				return document.getElementById(id);
			}
			function change(val,num,str){
				centerLeft.style.backgroundPositionY=(-val*50)+"px";
				lightstar.style.width=(num*8)+"px";
				content.innerHTML=str;
			}
			var sec=$id("sec");
			var centerLeft=$id("centerLeft");
			var lightstar=$id("lightstar");
			var content=$id("content");
			var arr=[10,9,6,8,6,8,5,2,1,3,6,1];
			var str=["今天的事业运势不错,虽然容易有一些竞争者或其他小人出现在事业中,但他们反而会成就自己的事业。今天仍然适合外出学习进修,提升自己。","外出容易遇到一些小麻烦,但终能化解,转不利为有利。","会专注于事业方面,虽然在事业工作方面,会有些迷茫,这天感情方面运势也不错。","这天巨蟹会很忙碌,但会忙得非常愉快,即使平时不太爱运动的巨蟹,这天也可能很强活动一下自己。","快乐的一天,也有迁移运势,工作和健康方面的运势也都还不错。","这天适合多听取一些朋友,对自己家庭,或者房子装修布置的建议。","有利于学习考试,与上司的沟通也会比较良好,总体比较愉快。","财运很好的一天,讲话比较严谨大气,也适合多一些娱乐活动。","不错的一天,财运仍然较好,会因为平时不太熟悉的一些晚辈帮助,或者因为娱乐活动而获利。","有朋友来帮助自己,让自己信心满满,心理层面,也是比较愉悦。","暗中会得人帮助,也容易得到亲戚,邻居的一些帮助,这天财运上也还可以。","社交运仍然强旺,内心也变得强大起来,也会因为事业方面的事情,心情愉快。"];
			sec.function(){
				var val=this.value;
				change(val,arr[val],str[val]);
			}
		</script>
	</body>
</html>

3.DOM

JS组成部分:

  • ECMAScript
  • DOM——Document Object Model 文档对象模型
  • BOM

DOM:

  • DOM树
  • 节点:(元素、标签)
    • 标签节点
    • 属性节点
    • 文本节点
  • 访问节点
    • 访问标签节点:getElementsByTagName
    • id属性:getElementById
    • class属性:getElementsByClassName(IE6、7、8不支持这个写法)
      • 例如IE6、7基本上没有人在用了,但是IE8使用人数还不少
      • IE9及以后的版本是兼容的
      • 写一个兼容的函数,直接调用来处理兼容问题

IE6、7、8兼容问题处理办法:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			span{
				display: inline-block;
				width:50px;
				height:50px;
				background-color:skyblue;
				line-height: 50px;
			}
		</style>
	</head>
	<body>
		<span>内容一</span>
		<span class="box">内容二</span>
		<span>内容三</span>
		<span class="box">内容四</span>
		<span>内容五</span>
		<span>内容六</span>
		<span class="box">内容七</span>
	</body>
	<script type="text/javascript">
		function getClass(classname){
			if(document.getElementsByClassName){
				return document.getElementsByClassName(classname);
			}
			var arr=[];
			var dom=document.getElementsByTagName("*");
			for(var i=0;i<dom.length;i++){
				if(dom[i].className==classname){
					arr.push(dom[i]);
				}
			}
			return arr;
		}
		var boxs=getClass("box");
		for(var i=0;i<boxs.length;i++){
			boxs[i].style.backgroundColor="yellow";
		}
	</script>
</html>

多类名的getClass函数封装:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			span{
				display: inline-block;
				width:50px;
				height:50px;
				background-color:skyblue;
				line-height: 50px;
			}
		</style>
	</head>
	<body>
		<span>内容一</span>
		<span class="dv box">内容二</span>
		<span>内容三</span>
		<span class="box">内容四</span>
		<span>内容五</span>
		<span>内容六</span>
		<span class="dd box">内容七</span>
	</body>
	<script type="text/javascript">
		function getClass(classname){
			if(document.getElementsByClassName){
				return document.getElementsByClassName(classname);
			}
			var arr=[];
			var dom=document.getElementsByTagName("*");
			for(var i=0;i<dom.length;i++){
				var newArr=dom[i].className.split(" ");
				for(var j=0;j<newArr.length;j++){
					if(newArr[j]==classname){
						arr.push(dom[i]);
					}
				}
			}
			return arr;
		}
		var boxs=getClass("box");
		for(var i=0;i<boxs.length;i++){
			boxs[i].style.backgroundColor="red";
		}		
	</script>
</html>

带id名的getClass函数封装

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			li{
				list-style: none;
				width:100px;
				height:40px;
				display: inline-block;
				float:left;
				margin:20px;
				background-color:hotpink;
			}
		</style>
	</head>
	<body>
		<div id="topbox">
			<ul>
				<li>上1</li>
				<li class="box">上2</li>
				<li>上3</li>
				<li class="box">上4</li>
				<li>上5</li>
				<li class="box">上6</li>
				<li>上7</li>
			</ul>
		</div>
		<div id="bottombox">
			<ul>
				<li>下1</li>
				<li>下2</li>
				<li>下3</li>
				<li>下4</li>
			</ul>
		</div>
		<script type="text/javascript">
			function getClass(classname,id){
				if(document.getElementsByClassName){
					if(id){
						var id=document.getElementById(id);
						return id.getElementsByClassName(classname);
					}else{
						return document.getElementsByClassName(classname);
					}
				}
				var arr=[];
				if(id){
					var id=document.getElementById(id);
					var dom=id.getElementsByTagName("*");
				}else{
					var dom=document.getElementsByTagName("*");
				}
				for(var i=0;i<dom.length;i++){
					var newArr=dom[i].className.split(" ");
					for(var j=0;j<newArr.length;j++){
						if(newArr[j]==classname){
							arr.push(dom[i]);
						}
					}
				}
				return arr;
			}
			var boxs=getClass("box","topbox");
			for(var i=0;i<boxs.length;i++){
				boxs[i].style.backgroundColor="skyblue";
			}
		</script>
	</body>
</html>

4.节点关系

  • 父节点parentNode,这个操作可以连续使用,如span.parentNode.parentNode
  • 兄弟节点nextElementSibling、previousElementSibling;注意nextSibling、previousSibling是IE6、7、8专用获取方式。
  • 子节点firstElementChild、lastElementChild;注意firstChild、lastChild是IE6、7、8专用获取方式。
    • childNodes,他是一个W3C指定推荐的,包含换行在内
    • nodeType==1,表示这是元素节点
    • children能拿到子元素,且没有多余内容,这是一个非标准,但是好用,且没有兼容问题。

练习:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			ul{
				margin:10px;
			}
			li{
				width:100px;
				height:100px;
				background-color:skyblue;
				list-style: none;
				display: inline-block;
				text-align: center;
				line-height: 100px;
				font-size:30px;
				margin:30px;
			}
		</style>
	</head>
	<body>
		<div id="box">
			<ul>
				<li>1</li>
				<li>2</li>
				<li id="lis">3</li>
				<li>4</li>
				<li>5</li>
			</ul>
		</div>
		<script type="text/javascript">
			var uls=document.getElementsByTagName("ul");
			var lis=document.getElementById("lis");
			lis.parentNode.style.backgroundColor="yellow";
			lis.parentNode.parentNode.style.backgroundColor="red";
			lis.nextElementSibling.style.backgroundColor="green";
			lis.previousElementSibling.style.backgroundColor="green";
			uls[0].firstElementChild.style.backgroundColor="green";
			uls[0].lastElementChild.style.backgroundColor="green";
			var liss=uls[0].childNodes;
			for(var i=0;i<liss.length;i++){
				if(liss[i].nodeType==1){
					console.log(liss[i]);
				}
			}
			var lisss=uls[0].children;
			for(var i=0;i<lisss.length;i++){
				console.log(lisss[i]);
			}			
		</script>
	</body>
</html>

百度流量研究院

练习
  • 商品展重写
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			*{
				margin:0;
				padding:0;
			}
			#container{
				width:360px;
				height:435px;
				border:1px solid #666;
				margin:100px auto;
			}
			#big{
				width:360px;
				height:360px;
				background:url(img/01big.jpg) no-repeat;
			}
			#small li{
				list-style: none;
				float:left;
				border:1px solid #666;
			}
		</style>
	</head>
	<body>
		<div id="container">
			<div id="big"></div>
			<div id="small">
				<ul>
					<li><img src="img/01.jpg"/></li>
					<li><img src="img/02.jpg"/></li>
					<li><img src="img/03.jpg"/></li>
					<li><img src="img/04.jpg"/></li>
					<li><img src="img/05.jpg"/></li>
				</ul>
			</div>
		</div>
		<script type="text/javascript">
			var lis=document.getElementsByTagName("li");
			var big=document.getElementById("big");
			function show(index){
				lis[index].function(){
					console.log(11);
					big.style.backgroundImage="url(img/0"+(index+1)+"big.jpg)";
				}
			}
			for(var i=0;i<lis.length;i++){
				show(i);
			}
		</script>
	</body>
</html>

tab栏再练习:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			*{
				margin:0;
				padding:0;
			}
			#container{
				width:382px;
				height:440px;
				border:1px solid #666;
				margin:100px auto;
			}
			#big{
				margin:auto;
				width:360px;
				height:360px;
			}
			#small li{
				display: inline-block;
				list-style: none;
				border:1px solid #666;
			}			
			#big img{
				display: none;
			}
			#small .light{
				border:2px red solid;
			}
			#big .show{
				display: block;
			}
		</style>
	</head>
	<body>
		<div id="container">			
			<div id="small">
				<ul>
					<li class="light"><img src="img/01.jpg"/></li>
					<li><img src="img/02.jpg"/></li>
					<li><img src="img/03.jpg"/></li>
					<li><img src="img/04.jpg"/></li>
					<li><img src="img/05.jpg"/></li>
				</ul>
			</div>
			<div id="big">
				<img src="img/01big.jpg" class="show"/>
				<img src="img/02big.jpg"/>
				<img src="img/03big.jpg"/>
				<img src="img/04big.jpg"/>
				<img src="img/05big.jpg"/>
			</div>
		</div>
		<script type="text/javascript">
			var lis=document.getElementsByTagName("li");
			var big=document.getElementById("big");
			var imgs=big.getElementsByTagName("img");
			for(var i=0;i<lis.length;i++){
				lis[i].index=i;
				lis[i].function(){
					for(var j=0;j<lis.length;j++){
						lis[j].className="";
						imgs[j].className="";
					}
					this.className="light";
					imgs[this.index].className="show";
				}
			}
		</script>
	</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值