将JavaScript函数应用于除第i个元素之外的所有Array元素
在我的一个项目中,我制作了3个画廊,但是我希望将他们两个放在同一个位置,而不是同一个位置。 为了做到这一点,我选择了创建3个按钮。 例如,当我点击第一个按钮时,第一个画廊应该出现(两个画廊最初都是显示:无),然后当我点击第二个按钮时,第二个应该出现,之前显示的应该消失,所以为每个画廊。 我做了一个简化的页面副本,使思维更加简单。
一般来说,我的问题是我不知道如何将一个函数应用于数组中的所有元素,除了一个元素。
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Galleries</title>
<link rel="stylesheet" type="text/css" href="gs.css">
<style type="text/css">
body{
background-color:royalblue;
}
header{
text-align: center;
}
article{
width:95%;
margin:auto 2.5% auto 2.5%;
height:850px;
background-color:tomato;
display:none;
}
</style>
</head>
<body>
<header>
<button>Third Gallery</button>
<button>Second Gallery</button>
<button>Third Gallery</button>
</header>
<section>
<article>
<h1>This is the first gallery</h1>
</article>
<article>
<h1>This is the second gallery</h1>
</article>
<article>
<h1>This is the third gallery</h1>
</article>
</section>
<script type="text/javascript">
var button=document.getElementsByTagName('button');
var gallery=document.getElementsByTagName('article');
for(var i=0; i<button.length; i++){
(function(index){
button[index].onclick=function(){
gallery[index].style.display="block";
}
}(i));
}
</script>
</body>
</html>
你所做的几乎是正确的......循环遍历整个事物,当特定元素出现时,不要这样做,但我不明白这里使用闭包的含义是什么:
var button=document.getElementsByTagName('button');
var gallery=document.getElementsByTagName('article');
for(var i=0; i<button.length; i++){
if (i != 2) // Make sure `i` is not equal to 2.
(function(index){
button[index].onclick=function(){
gallery[index].style.display="block";
}
}(i));
}
你可以遍历所有的元素和比较index
与按钮的index
当前图库项目:
[].forEach.call(gallery, function (el, i) {
el.style.display = i === index ? 'block': 'none';
});
要么:
for (var i = 0; i < gallery.length; i++) {
gallery[i].style.display = i === index ? 'block': 'none';
}
这将遍历所有元素,并将每个元素的display
设置为none
除了on与对应于单击按钮的index
。
示例在这里
var button = document.getElementsByTagName('button');
var gallery = document.getElementsByTagName('article');
for (var i = 0; i < button.length; i++) {
(function(index) {
button[index].onclick = function() {
[].forEach.call(gallery, function (el, i) {
el.style.display = i === index ? 'block': 'none';
});
}
}(i));
}
链接地址: http://www.djcxy.com/p/89185.html
上一篇: Apply a JavaScript function to all Array elements except the ith element
下一篇: How can I combine 2 SQL queries and retrieve a cumulative count?