JavaScript 切换显示 : block/none

标签 javascript toggle

我的下面的代码有问题。我想要一个 div 元素,该元素在单击 + 号时出现,在单击 x 号时消失。我能弄清楚消失的部分。但不知何故,出现部分不起作用。 有人可以帮我解决这个问题吗?

.button {
	cursor: pointer;
}
<span onclick="element.querySelector('.more').style.display = 'block';" class="button">&plus;
<div id="more">
<span onclick="this.parentElement.style.display = 'none';" class="button">&times;
<p>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
</div>

编辑: 不幸的是,建议的 this.querySelector('#more').style.display = 'block'"; 不起作用。我如何访问按钮旁边的 #more id,而不是代码中的第一个?

最佳答案

描述

span需要关闭<span>stuff</span>

运行时 querySelector您需要使用#对于 ID 和 .对于 CSS 类。运行 querySelector 需要运行一个元素:this , document这是两个例子。

.button {
	cursor: pointer;
}
// need to select by ID #, search the document, close the span
<span onclick="document.querySelector('#more').style.display = 'block';" class="button">&plus;</span>
<div id="more">
// close the span
<span onclick="this.parentElement.style.display = 'none';" class="button">&times;</span>
<p>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
</div>

<小时/>

使用类的示例,还更智能地隐藏加号

.button {
  cursor: pointer;
}
<div class="wrapper">
  <span onclick="this.parentElement.querySelector('.more').style.display = 'block'; this.style.display = 'none';" class="button" style="display: none">&plus;</span>
  <div class="more">
    <span onclick="this.parentElement.style.display = 'none'; this.parentElement.parentElement.querySelector('span').style.display = 'block';" class="button">&times;</span>
    <p>
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
      sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
      rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
  </div>
</div>

关于JavaScript 切换显示 : block/none,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40688267/

相关文章:

batch-file - 如何使用 Batch 在可滚动菜单中制作一系列切换开关?

jquery - 切换独立 div 不起作用

javascript - 鼠标弹起时的 jQuery 切换

javascript - 当 id 具有句点运算符时启用打开日期选择器

javascript - 在日文输入中输入 keyup 事件

javascript - 设置要在 JavaScript 中读取的文本文件?

javascript - 在不注入(inject) $rootScope 的情况下对指令中的 Angular 事件使用react

javascript - CoffeScipt 文件编译为 JS 的差异

jQuery toggle() 并且只复制可见文本而不使用 remove()

javascript - 使用选项值显示 block 和不显示