1、百度换肤效果
案例分析:
- 这个案例练习的是给一组元素注册事件
- 给4个小图片利用循环注册点击事件
- 当我们点击了这个图片,我们的页面背景改为当前的图片
核心算法:把当前图片的src路径取过来,给body做为背景即可
<head>
<style>
*{
padding: 0;
margin: 0;
}
body {
background: url(image/1.jpg) no-repeat center top;
}
li{
list-style: none;
}
.baidu{
overflow: hidden;
margin: 100px auto;
background-color: #fff;
width: 410px;
padding-top: 3px;
}
.baidu li{
float: left;
margin: 0 1px;
cursor: pointer;
}
.baidu img{
width: 100px;
}
</style>
</head>
<body>
<div class="baidu">
<ul>
<li><img src="image/1.jpg" alt=""></li>
<li><img src="image/2.jpg" alt=""></li>
<li><img src="image/3.jpg" alt=""></li>
<li><img src="image/4.jpg" alt=""></li>
</ul>
</div>
<script>
//1.获取元素
var imgs = document.querySelector('.baidu').querySelectorAll('img');
//2.循环注册事件
for(var i = 0 ; i<imgs.length; i++){
imgs[i].onclick=function(){
//this.src 就是我们点击图片的路径 将它给body就可以了
document.body.style.backgroundImage='url(' + this.src +' )';
}
}
</script>
</body>
2、表格隔行变色效果
案例分析:
- 用到新的鼠标事件 鼠标经过onmouseover 鼠标离开onmouseout
- 核心思路:鼠标经过tr行 当前的行变背景颜色 鼠标离开就去掉当前的背景颜色
- 注意:第一行(thead里面的行)不需要变换颜色 因此我们获取的是tbody里面的行
<head>
<style>
table{
width: 800px;
margin: 100px auto;
text-align: center;
border-collapse: collapse;
font-size: 14px;
}
thead tr{
height: 30px;
background-color: skyblue;
}
tbody td{
border-bottom: 1px solid #d7d7d7;
color:blue;
}
.bg{
background-color: pink;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>代码</th>
<th>名称</th>
<th>最新公布净值</th>
<th>累计净值</th>
<th>前单位净值</th>
<th>净值增长率</th>
</tr>
</thead>
<tbody>
<tr>
<td>003526</td>
<td>农行金穗3个月定期开放债券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>农行金穗3个月定期开放债券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
<tr>
<td>003526</td>
<td>农行金穗3个月定期开放债券</td>
<td>1.075</td>
<td>1.079</td>
<td>1.074</td>
<td>+0.047%</td>
</tr>
</tbody>
</table>
<script>
// 1.获取元素 获取的是tbody里面所以的行
var trs = document.querySelector('tbody').querySelectorAll('tr');
// 2.利用循环注册事件
for(var i = 0; i<trs.length; i++){
// 3.鼠标经过事件 onmouseover
trs[i].onmouseover = function(){
this.className = 'bg';
}
// 4.鼠标离开事件 onmouseout
trs[i].onmouseout = function(){
this.className = '';
}
}
</script>
</body>
3、表单全选和取消全选
案例分析:
- 全选和取消全选做法:让下面所有复选框的checked属性(选中状态)跟随全选按钮即可
- 下面复选框需要全部选中,上面全选才能选中做法:给下面所有复选框绑定点击事件,每次点击,都要循环查看下面所有的复选框是否有没选中的,如果有一个没选中,上面全选就不选中。
<head>
<style>
table {
width: 300px;
margin: 100px auto;
text-align: center;
border-collapse: collapse;
}
thead tr {
background-color: skyblue;
}
tbody td{
border: 1px solid #dfdfdf;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th><input type="checkbox" id="j_cbAll"></th>
<th>商品</th>
<th>价格</th>
</tr>
</thead>
<tbody id="j_tbs">
<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 j_cbAll = document.getElementById('j_cbAll');//全选按钮
var j_tbs = document.getElementById('j_tbs').getElementsByTagName('input');//下面所有的复选框都被选中
// 2.注册事件
// 全选和取消全选做法
j_cbAll.onclick = function(){
for(var i = 0; i<j_tbs.length; i++){
// this.checked 可以得到当前复选框的选中状态 如果是true 就是选中 如果是false 就是未选中
j_tbs[i].checked = this.checked;
}
}
// 下面是复选框需全部选中 上面全选才能选中做法
for(var i = 0; i<j_tbs.length; i++){
j_tbs[i].onclick = function() {
// flag 控制全选按钮是否选中
var flag =true;
// 每次点击下面的复选框都要循环检查4个小按钮是否全被选中
for(var i = 0 ; i<j_tbs.length; i++){
if(!j_tbs[i].checked){
flag=false;
break;//退出for循环 这样可以提高执行效率 因为只要有一个没有选中 剩下的就无需
}
}
j_cbAll.checked = flag;
}
}
</script>
</body>