2016-11-29 65 views
-1

我想知道是否有任何简单的方法来切换JavaScript元素的HTML元素?我为我的一个项目制作了一堆ascii艺术品,我需要一种有效的方式来显示/隐藏它,而不用重复同一行数百万次。有没有办法用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

任何不使用[getElementsByClassName()](http://www.w3schools.com/jsref/met_document_getelementsbyclassname.asp)的具体原因? – sharyex

+0

感谢您的想法,我会研究操纵类。这对我来说都是超新的,所以我甚至不知道我可以将一个类组合到一个数组中。 – syntaxjedi

回答

0

虽然我与你应该使用类此的评论者同意,在回答你的问题是,你是叫getElementById,当你需要还叫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

相关问题