我已经尝试获取一系列图片来创建一个简单的轮播。当我尝试更改类名以显示或隐藏某些元素时,我的数组被修改了,我不知道为什么...
这是我的小提琴https://jsfiddle.net/op1nzkxc/
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="style/style.css">
</head>
<body>
<div id="my-carousel">
<div>
<div class="car-hide">Picture 1</div>
<div class="car-hide">Picture 2</div>
<div class="car-hide">Picture 3</div>
</div>
</div>
<script src="js/script.js"></script>
</body>
</html>
Javascript:
pictures = [];
function getAllElementsHidden(){
return document.getElementsByClassName("car-hide");
}
function startSlide(){
pictures = getAllElementsHidden();
console.log(pictures);
pictures[1].className = "car-show";
console.log(pictures);
}
startSlide();
CSS:
body{
text-align: center;
}
ul{
text-decoration: none;
}
.car-hide{
display: none;
}
有人可以帮我吗?
.getElementsByClassName
返回元素的活动集合。它始终是最新的。如果删除使它合格的功能,则该功能将不再存在。如果以后需要保留节点的不变集合,则需要使用.slice
复制它;但是,由于实时集合不是Array
而是类似数组的对象,因此我们需要采用Array
的.slice
并将其应用于实时集合:
var pictures = Array.prototype.slice.call(getAllElementsHided())