2016-11-29 6 views
-1

JavascriptでHTML要素を切り替える簡単な方法があるのでしょうか?私が作っている私のプロジェクトの一つのためにアスキーアートをたくさん持っています。百万回同じ行を繰り返すことなく、表示/非表示に効率的な方法が必要です。javascriptで複数のhtmlタグを隠す方法はありますか?

これは、問題のあるコードの小さなスニペットです:あなたが見ることができるように

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 */ 
} 

、それは本当に不格好と巨大です。 idを変数に設定して、次のような関数内から呼び出そうとしました。

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

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

しかし、それは何らかの理由で機能しません。どんなアイデアでも大歓迎です。

+0

を呼び出す必要があるときにgetElementByIdを呼び出しているということです[getElementsByClassName()]を使用しない特定の理由(http://www.w3schools.com/jsref/met_document_getelementsbyclassname.asp) – sharyex

+0

アイデアをありがとう、私はクラスを操作します。これは私には全く新しいものなので、クラスを配列にまとめることさえできなかった。 – syntaxjedi

答えて

0

私はあなたがこのためにクラスを使用する必要がありますコメンターに同意しながら、あなたの質問への答えはあなたがまだどれdocument.getElementById

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

私のファイルでは、document.getElementById( "");関数と同じ変数に名前を付けていたので、それが機能していないことがわかったので、それらをすべてdaggerView、shortViewなどに切り替えました。今は正しく動作しています。私はあなたのソリューションが、おかげでそれまで気づかなかった。 – syntaxjedi

関連する問題