【发布时间】:2021-05-21 18:37:08
【问题描述】:
我在每个触发元素上使用了onClick 函数,使其在点击时显示/隐藏多个元素 ID。默认情况下,使用 CSS 显示属性隐藏显示/隐藏元素(前 3 个主要元素除外)。 onClick 事件将改变多个元素的显示属性,使一些可见,一些不可见。随着触发元素和显示/隐藏元素的列表越来越多,脚本将变得非常低效和重复。在不使用大量重复的 javascript 片段的情况下,我还能如何实现以下目标?下面的 sn-p 是脚本的一个非常简化的版本。
function trigger1(){
document.getElementById('trigger1').style.display ='none';
document.getElementById('trigger2').style.display ='none';
document.getElementById('trigger3').style.display ='none';
document.getElementById('element1').style.display ='block';
document.getElementById('element2').style.display ='block';
document.getElementById('element3').style.display ='block';
document.getElementById('element4').style.display ='none';
document.getElementById('element5').style.display ='none';
document.getElementById('subelement1').style.display ='none';
document.getElementById('subelement2').style.display ='none';
document.getElementById('subelement3').style.display ='none';
}
function trigger2(){
document.getElementById('trigger1').style.display ='none';
document.getElementById('trigger2').style.display ='none';
document.getElementById('trigger3').style.display ='none';
document.getElementById('element1').style.display ='none';
document.getElementById('element2').style.display ='none';
document.getElementById('element3').style.display ='none';
document.getElementById('element4').style.display ='block';
document.getElementById('element5').style.display ='block';
document.getElementById('subelement1').style.display ='none';
document.getElementById('subelement2').style.display ='none';
document.getElementById('subelement3').style.display ='none';
}
function trigger3(){
document.getElementById('trigger1').style.display ='none';
document.getElementById('trigger2').style.display ='none';
document.getElementById('trigger3').style.display ='none';
document.getElementById('element1').style.display ='block';
document.getElementById('element2').style.display ='none';
document.getElementById('element3').style.display ='block';
document.getElementById('element4').style.display ='block';
document.getElementById('element5').style.display ='none';
document.getElementById('subelement1').style.display ='none';
document.getElementById('subelement2').style.display ='none';
document.getElementById('subelement3').style.display ='none';
}
function trigger4(){
document.getElementById('trigger1').style.display ='none';
document.getElementById('trigger2').style.display ='none';
document.getElementById('trigger3').style.display ='none';
document.getElementById('element1').style.display ='none';
document.getElementById('element2').style.display ='none';
document.getElementById('element3').style.display ='none';
document.getElementById('element4').style.display ='none';
document.getElementById('element5').style.display ='none';
document.getElementById('subelement1').style.display ='block';
document.getElementById('subelement2').style.display ='block';
document.getElementById('subelement3').style.display ='none';
}
function trigger5(){
document.getElementById('trigger1').style.display ='none';
document.getElementById('trigger2').style.display ='none';
document.getElementById('trigger3').style.display ='none';
document.getElementById('element1').style.display ='none';
document.getElementById('element2').style.display ='none';
document.getElementById('element3').style.display ='none';
document.getElementById('element4').style.display ='none';
document.getElementById('element5').style.display ='none';
document.getElementById('subelement1').style.display ='none';
document.getElementById('subelement2').style.display ='block';
document.getElementById('subelement3').style.display ='block';
}
function trigger6(){
document.getElementById('trigger1').style.display ='none';
document.getElementById('trigger2').style.display ='none';
document.getElementById('trigger3').style.display ='none';
document.getElementById('element1').style.display ='none';
document.getElementById('element2').style.display ='none';
document.getElementById('element3').style.display ='none';
document.getElementById('element4').style.display ='none';
document.getElementById('element5').style.display ='none';
document.getElementById('subelement1').style.display ='block';
document.getElementById('subelement2').style.display ='block';
document.getElementById('subelement3').style.display ='block';
}
function triggerBack(){
document.getElementById('trigger1').style.display ='block';
document.getElementById('trigger2').style.display ='block';
document.getElementById('trigger3').style.display ='block';
document.getElementById('element1').style.display ='none';
document.getElementById('element2').style.display ='none';
document.getElementById('element3').style.display ='none';
document.getElementById('element4').style.display ='none';
document.getElementById('element5').style.display ='none';
document.getElementById('subelement1').style.display ='none';
document.getElementById('subelement2').style.display ='none';
document.getElementById('subelement3').style.display ='none';
}
#trigger1 { display: block; background-color: red; }
#trigger2 { display: block; background-color: blue; }
#trigger3 { display: block; background-color: yellow; }
#element1 { display: none; background-color: purple; }
#element2 { display: none; background-color: green; }
#element3 { display: none; background-color: cyan; }
#element4 { display: none; background-color: violet; }
#element5 { display: none; background-color: magenta; }
#subelement1 { display: none; background-color: orange; }
#subelement2 { display: none; background-color: lightblue; }
#subelement3 { display: none; background-color: lightgreen; }
.container { width: 100%; }
.wrapper {
width: 80%;
margin-left: auto;
margin-right: auto;
}
.group {
width: 100%;
float: left;
display: inline-block;
}
.element {
height: 50px;
width: 25%;
float: left;
display: inline-block;
}
button {
height: 20px;
width: 100px;
background-color: black;
color: white;
}
<div class="container">
<div class="wrapper">
<div class="group">
<div class="element" id="trigger1" onClick="trigger1();"></div>
<div class="element" id="trigger2" onClick="trigger2();"></div>
<div class="element" id="trigger3" onClick="trigger3();"></div>
</div>
<div class="group">
<div class="element" id="element1" onClick="trigger4();"></div>
<div class="element" id="element2" onClick="trigger5();"></div>
<div class="element" id="element3" onClick="trigger6();"></div>
<div class="element" id="element4"></div>
<div class="element" id="element5"></div>
</div>
<div class="group">
<div class="element" id="subelement1"></div>
<div class="element" id="subelement2"></div>
<div class="element" id="subelement3"></div>
</div>
<div class="group">
<button id="reset" onClick="triggerBack();">Back to start</button>
</div>
</div>
</div>
【问题讨论】:
-
为什么是 jQuery 标签?我没有看到任何
标签: javascript jquery css show-hide