2016-11-29 3 views
-1

Ich frage mich, ob es eine einfache Möglichkeit gibt, HTML-Elemente mit Javascript umzuschalten? Ich habe ein paar Ascii-Kunstwerke für eines meiner Projekte, die ich mache, ich brauche eine effiziente Möglichkeit, es ein- und auszublenden, ohne die gleiche Zeile millionenfach zu wiederholen.Gibt es eine Möglichkeit, mehrere HTML-Tags mit Javascript zu verstecken?

Dies ist ein kleiner Ausschnitt des betreffenden Code:

function dagger(){ 
    document.getElementById("short").style.display = "none"; 
    document.getElementById("long").style.display = "none"; 
    document.getElementById("broad").style.display = "none"; 
    document.getElementById("choose").style.display = "none"; 
    /* all the stats and modifiers go here */ 
} 

function short(){ 
    document.getElementById("dagger").style.display = "none"; 
    document.getElementById("long").style.display = "none"; 
    document.getElementById("broad").style.display = "none"; 
    document.getElementById("choose").style.display = "none"; 
    /* all the stats and modifiers go here */ 
} 

function long(){ 
    document.getElementById("short").style.display = "none"; 
    document.getElementById("dagger").style.display = "none"; 
    document.getElementById("broad").style.display = "none"; 
    document.getElementById("choose").style.display = "none"; 
    /* all the stats and modifiers go here */ 
} 

function broad(){ 
    document.getElementById("short").style.display = "none"; 
    document.getElementById("long").style.display = "none"; 
    document.getElementById("dagger").style.display = "none"; 
    document.getElementById("choose").style.display = "none"; 
    /* all the stats and modifiers go here */ 
} 

Wie Sie sehen, es ist wirklich klobig und riesig. Ich habe versucht, die ID in eine Variable setzen und sie von innen die Funktionen wie folgt aufrufen:

var dagger = getElementById("dagger"); 
var short = getElementById("short"); 

function dagger(){ 
    short.style.display = "none"; 
} 

Aber das wäre aus irgendeinem Grund nicht funktionieren. Irgendwelche Ideen würden sehr geschätzt werden.

+0

Beliebig spezifischer Grund, nicht [getElementsByClassName()] (http://www.w3schools.com/jsref/met_document_getelementsbyclassname.asp) zu verwenden? – sharyex

+0

danke für die Ideen, ich werde in manipulierende Klassen schauen. Das ist alles sehr neu für mich, also wusste ich nicht einmal, dass ich eine Klasse zu einem Array zusammenfassen könnte. – syntaxjedi

Antwort

0

Während ich mit den commen zustimmen, dass Sie Klassen für diese Verwendung werden sollte, ist die Antwort auf Ihre Frage, die Sie getElementById anrufen, wenn Sie noch document.getElementById anrufen müssen

var long = function() { 
 
    document.getElementById("short").style.display = "none"; 
 
    document.getElementById("long").style.display = "none"; 
 
    document.getElementById("broad").style.display = "none"; 
 
    document.getElementById("choose").style.display = "none"; 
 
    /* all the stats and modifiers go here */ 
 
} 
 

 
var short = document.getElementById("short"); 
 

 
var dagger = function() { 
 
\t short.style.display = "none"; 
 
}
<div id="short">short</div> 
 
<div id="long">long</div> 
 
<div id="broad">broad</div> 
 
<div id="choose">choose</div> 
 

 
<button onclick="long()">long</button> 
 
<button onclick="dagger()">dagger</button>

+0

In meinen Dateien war es document.getElementById (""); Ich fand heraus, dass es nicht funktionierte, weil ich die Variable die gleiche wie die Funktion nannte, so änderte ich sie alle zu daggerView, shortView, etc ... und es funktioniert jetzt richtig. Ich habe es bis zu deiner Lösung nicht bemerkt, danke. – syntaxjedi

Verwandte Themen