javascript - 如何隐藏和显示多个div并同时更改按钮内容?

标签 javascript html

我正在尝试隐藏 div 并同时更改按钮的文本内容。

问题:我遇到的问题是 div 被隐藏,但按钮的内容没有改变。

我将使用多个按钮来隐藏和显示多个图像和文本。

HTML

 <div class="hide-show-divs">
   <p>Some content in a div</p>
   <p>More content in a div</p>
 </div>

 <div class="hide-show-divs">
   <p>Some content in a div</p>
   <p>More content in a div</p>
 </div>

按钮

<div>
  <button class="hide-show-divs-btn" onclick="toggle()">Hide Divs</button>
</div>

JavaScript

function toggle() {
  var hideShowDivs = document.getElementsByClassName("hide-show-divs");
  for(var i = 0; i < hideShowDivs.length; i++){
    if (hideShowDivs[i].style.display === "none") {
      hideShowDivs[i].style.display = "block";
      changeBtnText();
    } else {
      hideShowDivs[i].style.display = "none";
    }
  }
}

function changeBtnText() {
  var hideShowImgBtn = document.getElementsByClassName("hide-show-divs-btn");
  for(var i = 0; i < hideShowImgBtn.length; i++)
    if(hideShowImgBtn[i].value =="Show divs") {
      hideShowImgBtn[i].value = "Hide divs";
    }else {
      hideShowImgBtn[i].value = "Show divs";
    }
  }

应该发生的是:

  1. 第一次单击该按钮时 - 我希望隐藏 div 以及该按钮中的文本更改为“显示 Divs”。

  2. 第二次单击该按钮时 - 我希望显示 div 并将该按钮中的文本更改回“隐藏 Divs”。

最佳答案

您已经拥有几乎大部分功能,只有几个问题

  1. div 换行按钮中有引号,synatx 错误
  2. 在切换函数内部,您需要调用changeBtnText才能更改
  3. 按钮没有值,因此如果失败,您可以使用innerText

function toggle() {
  var hideShowDivs = document.getElementsByClassName("hide-show-divs");
  changeBtnText(); // Invoking changeBtnText added
  for(var i = 0; i < hideShowDivs.length; i++){
    if (hideShowDivs[i].style.display === "none") {
      hideShowDivs[i].style.display = "block";
      changeBtnText();
    } else {
      hideShowDivs[i].style.display = "none";
    }
  }
}

function changeBtnText() {
  var hideShowImgBtn = document.getElementsByClassName("hide-show-divs-btn");
  for(var i = 0; i < hideShowImgBtn.length; i++)
    // Using innerText instead of value
    if(hideShowImgBtn[i].innerHTML =="Show divs") {
      hideShowImgBtn[i].innerHTML = "Hide divs";
    }else {
      hideShowImgBtn[i].innerHTML = "Show divs";
    }
  }

关于javascript - 如何隐藏和显示多个div并同时更改按钮内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55319345/

相关文章:

html - 我的 Photoshop 图像不会显示在我的网站上

javascript - 有没有查询评论节点的DOM API?

html - 如何在 Bootstrap Modal 标题上添加响应式背景图片?

Javascript 函数 onload 从未被调用

javascript - socket.io 客户端在长 Node.js 函数中自动断开连接

javascript - 实现浏览器可以使用的媒体设备

javascript - 每次加载文档时都会执行 click 函数

html - 使用 HTML CSS 更改 DIV 框的居中属性

jquery - 如果未选中所有复选框,则警告用户

javascript - 为什么我不能让我的表单关闭,以便我可以访问导航栏?