|
|

楼主 |
发表于 2022-5-3 08:56
|
显示全部楼层
在二楼,我们实现了盒子定时变换渐变背景的功能,但只针对第一个同类名盒子,另外两个盒子好歹也是兄弟,为啥它们不能拥有相同的功能?
嗯,公平公正理念要倡导和践行。
那么,这就需要讲讲新的知识点—— document.querySelectorAll() 内置函数和数组相关的东东:
document.querySelectorAll,顾名思义,它能查询(query)到全部的同类名元素并返回数组结构的值,语句用法与 document.querySelector 一样:
let myBox = document.querySelectorAll('.myBox');
此时,myBox 变量得到的值是一个数组,第一个对应的盒子写成 myBox[0],第二个是 myBox[1],第N个盒子写成 myBox[n]。设置第N个盒子的背景色则写成:
myBox[n].style.background = "linear-gradient(pink, red)";
一个一个地写上述语句,显然麻烦,所以,我们用一个 for 语句来实现:
for(j=0; j<myBox.length; j++) {
myBox[j].style.background = `linear-gradient(${getColor()}, ${getColor()})`;
}
其中,myBox.length 是数组长度,数组长度说的是构成数组的成员总数。
如此,所以同类名元素都能各自展开精彩的变色之旅,公平公正的法律理念在JS+CSS加持的H5世界里得以彰显:
- <style>
- .myBox {
- width: 200px;
- height: 100px;
- background: #ccc;
- padding: 10px;
- margin: 10px;
- }
- </style>
- <div class="myBox">第一个myBox盒子</div>
- <div class="myBox">第二个myBox盒子</div>
- <div class="myBox">第三个myBox盒子</div>
- <script>
- setInterval(setColor, 1000);
- function setColor() {
- let myBox = document.querySelectorAll('.myBox');
- for(j=0; j<myBox.length; j++) {
- myBox[j].style.background = `linear-gradient(${getColor()}, ${getColor()})`;
- }
- }
- function getColor() {
- return `#${Math.random().toString(16).substr(-6)}`;
- }
- </script>
复制代码
|
|