仅通过操作 CSS 文件和我的 Javascript 文件来显示具有特定 id 的 div

Only showing a div with a certain id by manipulating CSS file and my Javascript file

提问人: 提问时间:11/24/2018 最后编辑:Adriano 更新时间:11/24/2018 访问量:190

问:

我是 Javascript DOM 的新手,所以我需要一些帮助来了解基础知识,然后才能开始 - 我有一个 HTML 文件,如下所示:

<div id="content">
    <h1>FOREST SIMULATOR</h1>
    <div id="intro">
        starting forest (leave empty to randomize):
        <br />
        <textarea id="inputForest" name="inputForest" cols="16" rows="8"></textarea>
        <br />
        <button>generate</button>
    </div>
    <div id="sim" class="hidden"></div>
    <div id="pushtray" class="overlay"></div>
</div>

我只想用 显示 div 中的内容,确保不显示 和 div。我需要制定适当的 CSS 规则并使用 Javascript 的 element.add、remove 和 contains,这样我就可以控制哪些 CSS 规则处于活动状态。
我不完全确定这意味着什么以及它会是什么样子。
id="intro".overlay#sim

我在我的 CSS 文件中到底在做什么?

JavaScript HTML CSS DOM 客户端

评论

0赞 Estevan Maito 11/24/2018
使用 JavaScript 显示/隐藏“div”的可能副本

答:

0赞 SpeedOfRound 11/24/2018 #1

你应该把这个类给任何你不想看到的元素(你可以在一个元素上有任意数量的类),然后添加一个隐藏它们的 css 规则:hidden

<style>
  .hidden{
    display:none;
  }
</style>

然后,如果你想在采取某种操作时显示这些隐藏元素,你可以使用 javascript 分别添加和删除隐藏的类。

var element = document.getElementById("sim");
element.classList.remove("hidden")
1赞 Marko Panushkovski 11/24/2018 #2

如果您不想显示 id 为 “overlay” 和 “sim” 的 div 元素,您可以将其编写为:

document.getElementById("sim").style.display="none";
document.getElementById("pushtray").style.display="none";

评论

0赞 11/24/2018
所以这在我的 Javascript 文件中正确吗?我的 js 文件如何知道所指的“文档”?我正在使用 express-static 来提供 html 文件,它是这样知道的吗?
0赞 Marko Panushkovski 11/24/2018
它应该是正确的。您的 javascript 文件不必知道它在哪个文档中使用。您可以将其附加到它正确执行工作的每个 html 文件中。换句话说,你可以这样附加它:<head> <script src=“theNameOfYourJsFile.js”></script> </head> 每次你要在 js 文件中使用对象文档时,它总是会引用它所链接到的 html 文件
0赞 11/25/2018
你知道为什么我收到文档的 referenceError 吗?在我的html中,它写在标题<script src=“sim.js”></script>中。然而,当我输入节点sim.js时,它会在我引用文档的部分给我一个 referenceError。
0赞 Marko Panushkovski 11/25/2018
你的html文件和你的javascript文件必须在同一个文件夹中,如果不是,你应该把它们放在一起(以及css和html文件在一起)。
0赞 Bálint Cséfalvay 11/24/2018 #3

此代码隐藏了“overlay”和“pushtray”元素:

                   document.getElementById('overlay').style.display = 'none';
                  document.getElementById('pushtray').style.display =  'none' ;

此代码仅隐藏“overlay”和“pushtray”元素的内容,但这些元素仍“保留”在页面中的位置。

               document.getElementById('overlay').style.visibility = 'hidden';
              document.getElementById('pushtray').style.visibility= 'hidden' ;
0赞 Mark Baijens 11/24/2018 #4

以下 css 隐藏了 content div 中的所有元素。之后,它将显示介绍 div。div

使用 Javascript 将单击函数绑定到“生成”按钮,以隐藏介绍 div 并显示 sim div。

通过一些更改,您应该能够使其按照自己的喜好工作。

//Wait for the dom to finish loading
document.addEventListener("DOMContentLoaded", function(){
  //then bind a click event handler to all the buttons inside the div with the id intro
  document.querySelector("div#intro button").addEventListener("click", function(){
    //hide the intro div and show the sim div when the button is clicked
    document.getElementById("intro").style.display = "none";
    document.getElementById("sim").style.display = "block";
  });
});
div#content div {
  display: none;
}

div#content div#intro {
  display: block;
}
<div id="content">
    <h1>FOREST SIMULATOR</h1>
    <div id="intro">
        starting forest (leave empty to randomize):
        <br />
        <textarea id="inputForest" name="inputForest" cols="16" rows="8"></textarea>
        <br />
        <button>generate</button>
    </div>
    <div id="sim" class="hidden">lalala</div>
    <div id="pushtray" class="overlay">lalala</div>
</div>