排他思想:
我们想要某一个元素实现某种样式,需要用到循环的排他思想:
1.所有元素全部清楚样式
2.给当前元素设置样式(留下我自己)
3.注意顺序不能颠倒,首先干掉其他人,再设置自己
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
</style>
</head>
<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script>
1. //获取所有元素
var btns = document.getElementsByTagName('button');
//btn得到的是伪数组 里面的每一个元素btns[i];
for (var i = 0; i < btns.length; i++) {
btns[i].onclick = function() {
//我们先把所有的按钮背景颜色去掉
for (var i = 0; i < btns.length; i++) {
btns[i].style.backgroundColor = '';
}
//然后才让当前的元素背景颜色为pink
this.style.background = 'pink';
}
}
</script>
</body>
</html>
案例:模仿百度换肤效果
- 这个案例联系的是给一组元素注册事件
- 这四个小图片利用循环注册点击事件
- 当我们点击了这个图片,让我们的页面背景改为当前的图片
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background: url(test1/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>
<ul class="baidu">
<li><img src='test1/1.jpg' alt=''></li>
<li><img src='test1/2.jpg' alt=''></li>
<li><img src='test1/3.jpg' alt=''> </li>
<li><img src='test1/4.jpg' alt=''></li>
</ul>
<script>
//获取元素
var imgs = document.querySelector(".baidu").querySelectorAll("img");
for (var i = 0; i < imgs.length; i++) {
imgs[i].onclick = function() {
console.log(this.src);
document.body.style.backgroundImage = 'url(' + this.src + ')'
}
}
</script>
</body>
</html>
案例:表格隔行变色效果
用到新的鼠标事件经过onmouseover 鼠标离开onmouseout
核心思路:鼠标经过tr行,当前的行变背景颜色,鼠标离开去掉当前的背景颜色
注意:第一行thead里面的行不需要变换颜色,因此我们获取的是tbody里面的行
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0px;
padding: 0px;
}
.box {
margin: 100px auto;
}
.box thead td {
border: blue solid 1px;
}
.box tbody tr td {
border: blue solid 1px;
}
.box thead {
background-color: antiquewhite;
}
.bg {
background-color: pink;
}
</style>
</head>
<body>
<table class="box" cellspacing=0 px>
<thead>
<td>代码</td>
<td>名称</td>
<td>最新公布净值</td>
<td>累计净值</td>
<td>新单位净值</td>
<td>净值增长率</td>
</thead>
<tbody>
<tr>
<td>003526</td>
<td>译音紧随3个月开放债券</td>
<td>10075</td>
<td>1.098</td>
<td>1.074</td>
<td>+0.074%</td>
</tr>
<tr>
<td>003526</td>
<td>译音紧随3个月开放债券</td>
<td>10075</td>
<td>1.098</td>
<td>1.074</td>
<td>+0.074%</td>
</tr>
<tr>
<td>003526</td>
<td>译音紧随3个月开放债券</td>
<td>10075</td>
<td>1.098</td>
<td>1.074</td>
<td>+0.074%</td>
</tr>
<tr>
<td>003526</td>
<td>译音紧随3个月开放债券</td>
<td>10075</td>
<td>1.098</td>
<td>1.074</td>
<td>+0.074%</td>
</tr>
<tr>
<td>003526</td>
<td>译音紧随3个月开放债券</td>
<td>10075</td>
<td>1.098</td>
<td>1.074</td>
<td>+0.074%</td>
</tr>
<tr>
<td>003526</td>
<td>译音紧随3个月开放债券</td>
<td>10075</td>
<td>1.098</td>
<td>1.074</td>
<td>+0.074%</td>
</tr>
</tbody>
</table>
<script>
var tns = document.querySelector("tbody").querySelectorAll("tr");
for (var i = 0; i < tns.length; i++) {
tns[i].onmouseover = function() {
this.className = 'bg';
}
tns[i].onmouseout = function() {
this.className = '';
}
}
</script>
</body>
</html>