显示带有6个不同按钮的6个不同图形-Javascript

问题描述 投票:0回答:1

我对整个javascript编程(第一个项目)还很陌生。因此,我有一个使用CSS和javascript的PHP页面。有6个按钮可在6个不同的图形上提升遮罩(类)。按钮1 --->显示图表1按钮2 --->显示图表2。等等。如果已经显示一个图形并且打开了另一个图形,则第一个图形必须再次变得不可见。

因此,我整天进行了一些研究,并找到了通过某些功能实现该目标的方法

function choosegraph(){

    var sens1 = document.getElementById ('ButtonSens1');
    sens1.addEventListener ('click', Sensor1Graph, true);
    var sens2 = document.getElementById ('ButtonSens2');
    sens2.addEventListener ('click', Sensor2Graph, true);
    var sens3 = document.getElementById ('ButtonSens3');
    sens3.addEventListener ('click', Sensor3Graph, true);
    var sens4 = document.getElementById ('ButtonSens4');
    sens4.addEventListener ('click', meldung, true);
    var sens5 = document.getElementById ('ButtonSens5');
    sens5.addEventListener ('click', meldung, true);
    var sens6 = document.getElementById ('ButtonSens6');
    sens6.addEventListener ('click', meldung, true);

}

function Sensor1Graph(){
    var element = document.getElementById("lineDia1");
        element.classList.toggle("invisible");
    var element = document.getElementById("lineDia2");
        element.classList.add("invisible");
    var element = document.getElementById("lineDia3");
        element.classList.add("invisible");
    var element = document.getElementById("lineDia4");
        element.classList.add("invisible");
    var element = document.getElementById("lineDia5");
        element.classList.add("invisible");        
    var element = document.getElementById("lineDia6");
        element.classList.add("invisible");        

}

function Sensor2Graph(){
    var element = document.getElementById("lineDia1");
        element.classList.add("invisible");
    var element = document.getElementById("lineDia2");
        element.classList.toggle("invisible");
    var element = document.getElementById("lineDia3");
        element.classList.add("invisible");
    var element = document.getElementById("lineDia4");
        element.classList.add("invisible");
    var element = document.getElementById("lineDia5");
        element.classList.add("invisible");        
    var element = document.getElementById("lineDia6");
        element.classList.add("invisible"); 

function Sensor3Graph(){ ... }    
function Sensor4Graph(){ ... } 
function Sensor5Graph(){ ... } 
function Sensor6Graph(){ ... }  

所以这有效。但是我想有一种更简便快捷的方法来执行此操作。如果有人可以给我一些改进程序的提示,那就太好了。

谢谢

编辑:

显示了3个图形的一些HTML代码

<!-- Line Graphs  -->
    <article class="test invisible" id="lineDia1">  
        <section class="tachos">
            <div id="curve_chart1" style="width: 715px" ></div>
        </section>
    </article>

    <article class="test invisible" id="lineDia2">  
        <section class="tachos">
            <div id="curve_chart2" style="width: 715px" ></div>
        </section>
    </article>

    <article class="test invisible" id="lineDia3">  
        <section class="tachos">
            <div id="curve_chart3" style="width: 715px" ></div>
        </section>
    </article>

class -test是整个视觉类(是的,仍然不是最终的)class -invisible是掩码(显示:无;)

 <body onload="showSensor()">

“ choosegraph”在“ showSensor”函数中调用

javascript css
1个回答
0
投票

我看到您的HTML代码是重复的。我们可以动态生成它。

运行以下代码段:

var elements=[];
for(let i=1;i<=6;i++){
 let ele=document.createElement("article");
 ele.classList.add("invisible");
 ele.id=`lineDia${i}`
 let section=document.createElement("section");
 section.class="tachos"
 let div=document.createElement(`curve_chart${i}`);
 div.style.width="750px";
 div.innerHTML=`graph${i}`
 section.innerHTML=div.outerHTML;
 ele.innerHTML=section.outerHTML;
 let btn=document.createElement('button');
 btn.id=`buttonSense${i}`;
 btn.onclick=function(){
   sensorGraph(i)
 }
 btn.innerHTML=`Show graph${i}`;
 document.getElementById("main").appendChild(ele);
 document.getElementById("buttons-div").appendChild(btn);
 elements.push(ele);
}

function sensorGraph(i){
    elements.forEach((element,index)=>{
        if(i-1 == index)
         element.classList.toggle("invisible");
        else
         element.classList.add("invisible");
    });
}
.invisible{
 visibility:hidden;
}
#buttons-div{
display:inline-flex;
}
.as-console-wrapper { max-height: 100% !important; top: 0; }
<div id="main">

</div>
<div id="buttons-div">

</div>
© www.soinside.com 2019 - 2024. All rights reserved.