javascript - 不使用唯一 ID 影响所选 div 的按钮

标签 javascript html css

如何在不使用 ID ans .getElemetByID 方法的情况下为我的按钮制作一个只在该按钮所在的 block 上工作的脚本? 这是一个示例,其中我使用 ID 且仅用于一个按钮,但我想让所有按钮展开它们的父 block 。

function toggle() {

  var tBlock = document.getElementById("textblock");
  var tText = document.getElementById("text");

  if (tBlock.style.height === "100px" && tText.style.height === "60px") {
    tBlock.style.height = "auto";
    tText.style.height = "auto";
  } else {
    tBlock.style.height = "100px";
    tText.style.height = "60px";
  }
}
.docText {
  height: 100px;
  width: 100px;
  background: green;
  margin-bottom: 5px;
}

.docTextContent {
  height: 60px;
  width: 100px;
  overflow: hidden;
}
<div class="docText" id="textblock">
  <div class="docTextContent" id="text">
  TextTextText
  TextTextText
  TextTextText
  TextTextText
  TextTextText
  TextTextText
  </div>
  <button class="toggle_btn" onclick="toggle()">Show</button>
</div>

<div class="docText">
  <div class="docTextContent">
    TextTextText
  TextTextText
  TextTextText
  TextTextText
  TextTextText
  TextTextText
  </div>
  <button class="toggle_btn">Show</button>
</div>

<div class="docText">
  <div class="docTextContent">
    TextTextText
  TextTextText
  TextTextText
  TextTextText
  TextTextText
  TextTextText
  </div>
  <button class="toggle_btn">Show</button>
</div>

最佳答案

您可以通过类名检索所有切换按钮,然后在绑定(bind)点击处理程序时循环遍历它们来完成此操作。这是一个工作示例:

// GET ALL TOGGLES
var toggles = document.getElementsByClassName("toggle_btn");

// LOOP THROUGH EACH TOGGLE AND APPLY AN EVENT LISTENER
for (var i = 0; i < toggles.length; i++) {
  toggles[i].addEventListener("click", function(e) {
    e.preventDefault();

    // GET .docTextContent ELEMENT
    var tBlock = this.parentElement.children[0];

    // IF .docTextContent IS "CLOSED"
    if (tBlock.style.height === "60px" || tBlock.style.height === "") {
      tBlock.style.height = "auto";
    }

    // .docTextContent IS "OPEN"
    else {
      tBlock.style.height = "60px";
    }
  });
}
.docText {
  width: 100px;
  background: green;
  margin-bottom: 5px;
}

.docTextContent {
  height: 60px;
  width: 100px;
  overflow: hidden;
}
<div class="docText" id="textblock">
  <div class="docTextContent" id="text">
    TextTextText TextTextText TextTextText TextTextText TextTextText TextTextText
  </div>
  <button class="toggle_btn">Show</button>
</div>

<div class="docText">
  <div class="docTextContent">
    TextTextText TextTextText TextTextText TextTextText TextTextText TextTextText
  </div>
  <button class="toggle_btn">Show</button>
</div>

<div class="docText">
  <div class="docTextContent">
    TextTextText TextTextText TextTextText TextTextText TextTextText TextTextText
  </div>
  <button class="toggle_btn">Show</button>
</div>

关于javascript - 不使用唯一 ID 影响所选 div 的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49587799/

相关文章:

javascript - Webpack 通过调用 sockjs-node/info 记录错误 "net::ERR_SSL_PROTOCOL_ERROR"

c# - 如何计算旋转图像的正确位置偏移?

javascript - 使用 JS 连接到 SQL Server

php - 换行符有什么用?

html - 在内置有序列表中使用自定义有序列表

html - Flexbox 中 Flex 元素的垂直对齐方式

css - Bootstrap 打印

javascript - 未经我同意输入类型图像提交表单

javascript - 检查 DOM 元素和子元素是否包含任何文本 [JS 或 jQuery]

html - 谷歌地图 iframe 宽度 ="100%"在 Chrome 中不起作用