【Web前端笔记-基础】第十四课,Javascript的排他思想

本文介绍了JavaScript中的排他思想,强调在一组元素中,通过清除其他元素样式并为特定元素添加样式来实现功能。文中通过三个小案例进行说明:百度换肤功能的实现,表格行交替颜色的设置,以及表单全选与取消功能的实现。
摘要由CSDN通过智能技术生成

一:排他思想

如果有同一组元素,想要某个元素实现某种样式,需要用到排他思想。

  1. 先将其他元素的这个属性清空(干掉他人)。
  2. 在这个特殊元素下添加表现(留下自己)。

二:小案例

1.百度换肤,点击相应的图片,背景变成相应的图片。

例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>百度换肤</title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			 body{
				 background-image: url(../img/BDOne.jpg);
				 background-repeat: no-repeat;
				 background-size: cover;
			 } 
			.baidu{
				overflow: hidden;
				margin: 100px auto;
				background-color: #FFFFFF;
				width: 410px;
				padding-top: 3px;
			}
			.baidu li{
				list-style: none;
				float: left;
				margin: 0 1px;
				
			}
			
			.baidu li img{
				width: 100px;
				cursor: pointer;
			}
			
		</style>
	</head>
	<body>
		
		<ul class="baidu">
			<li><img src="../img/BDOne.jpg" ></li>
			<li><img src="../img/BDTwo.jpg" ></li>
			<li><img src="../img/BDThree.jpg" ></li>
			<li><img src="../img/BDFour.jpg" ></li>
		</ul>
		
		<script type="text/javascript">
			//1获取元素
			var imgs=document.querySelector(".baidu").querySelectorAll("img");
			for(var i=0;i<imgs.length;i++){
				imgs[i].onclick=function(){
					//将这个路径给<body>
						document.body.style.backgroundImage='url('+this.src+')';
					
				}
			}
		</script>
	</body>
</html>

效果:

2.表格换行变色

例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>表格隔行变色</title>
		<style type="text/css">
			table{
				margin: 100px auto;
				height: 30px;
				text-align: left;	
			}
			table thead{
				background-color: skyblue;
			}
			tbody td{
				border-bottom: 1px solid #d7d7d7;
				font-size: 12px;
				color: blue;
			}
			.bg{
				background-color: rgb(222, 225, 230);
			}
		</style>
	</head>
	<body>
		<table border="0" cellspacing="0" cellpadding="5px">
			<thead>
				<tr>
					<th>属性名</th>
					<th>值</th>
					<th>含义</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td>color</td>
					<td>#ff0000或red或rgb(3,5,8)</td>
					<td>给文本设置颜色</td>
				</tr>
				<tr>
					<td>text-align</td>
					<td>left,right,center</td>
					<td>文本水平对齐方向</td>
				</tr>
				<tr>
					<td>text-decoration</td>
					<td>none,underline,overline,line-through</td>
					<td>文本修饰线</td>
				</tr>
				<tr>
					<td>text-transform</td>
					<td>capitalize,uppercase,lowercase</td>
					<td>大小写转换,首字母大写</td>
				</tr>
				<tr>
					<td>line-height</td>
					<td>固定值或百分比</td>
					<td>文字行高</td>
				</tr>
				<tr>
					<td>text-indent</td>
					<td>px,em</td>
					<td>文本首行缩进</td>
				</tr>
				<tr>
					<td>letter-spacing</td>
					<td>px</td>
					<td>字符间距</td>
				</tr>
				<tr>
					<td>word-spacing</td>
					<td>px</td>
					<td>单词间距</td>
				</tr>
			</tbody>
			
		</table>
		
		<script type="text/javascript">
			//1.获取元素
			var trs=document.querySelector("tbody").querySelectorAll("tr");
			//利用循环注册事件
			for(var i=0;i<trs.length;i++){
				//鼠标经过事件
				trs[i].onmouseover=function(){
					this.className="bg";
				}
				trs[i].onmouseout=function(){
					this.className="";
				}
			}
		</script>
	</body>
</html>

 

效果:

3.表单的全选取消

例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>表单全选取消全选</title>
		<style type="text/css">
			table{
				margin: 100px auto;
				height: 30px;
				width: 320px;
				
			}
			thead th{
				background-color: skyblue;
				border: 1px solid #d7d7d7;
			}
			tbody td{
				
				font-size: 12px;
				border: 1px solid #d7d7d7;
			}
			.bg{
				background-color: rgb(222, 225, 230);
			}
		</style>
	</head>
	<body>
		<table  cellspacing="0" cellpadding="">
			<thead>
				<tr>
					<th>
						<input type="checkbox" id="j_cbAll"/>
					</th>
					<th>商品</th>
					<th>价格</th>
				</tr>
			</thead>
			<tbody id="j_tb">
				<tr>
					<td><input type="checkbox" /></td>
					<td>iPhone8</td>
					<td>8000</td>
				</tr>
				<tr>
					<td><input type="checkbox" /></td>
					<td>iPad Pro</td>
					<td>5000</td>
				</tr>
				<tr>
					<td><input type="checkbox" /></td>
					<td>iPad Air</td>
					<td>2000</td>
				</tr>
				<tr>
					<td><input type="checkbox" /></td>
					<td>Apple Watch</td>
					<td>2000</td>
				</tr>
			</tbody>
		</table>
		
		<script>
			//1.获取事件源
			var trs=document.querySelector("tbody").querySelectorAll("tr");
			var j_cbAll=document.getElementById("j_cbAll");//全选按钮
			var j_tb=document.getElementById("j_tb").getElementsByTagName('input');//下面所有的复选框
			console.log(j_cbAll);
			//2.注册事件,处理程序
			for(var i=0;i<trs.length;i++){
				//鼠标经过事件
				trs[i].onmouseover=function(){
					this.className="bg";
				}
				trs[i].onmouseout=function(){
					this.className="";
				}
			}
			//2.注册事件处理程序:全选和取消全选
			j_cbAll.onclick=function(){
				
					for(var j=0;j<j_tb.length;j++){
						j_tb[j].checked=this.checked;
						 
					}
			}
			//2.注册事件处理程序:下面影响上面的
			for (var i = 0; i < j_tb.length; i++) {
				j_tb[i].onclick=function(){
					//每次点击循环检查4个按钮是否都选中
					//控制全选按钮是否选中
					var flag=true;
					for (var i = 0; i < j_tb.length; i++) {
						if(!j_tb[i].checked){
							flag=false;
							break;//提高执行效率
						}
					}
					j_cbAll.checked=flag;
				}
			}
		</script>
	</body>
</html>

效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值