django Javascript切换for循环中的显示

uemypmqf  于 2023-01-14  发布在  Go
关注(0)|答案(1)|浏览(107)

我目前正在尝试切换一个div,以显示和隐藏时,用户点击一个按钮,它目前的工作。然而,当我使用一个for循环显示一些数据列表,切换按钮仅显示和隐藏列表中第一组数据的div,而不显示和隐藏其余数据。在for循环中有多个相同的按钮,每个按钮都应该切换显示列表中当前数据的div,而不是第一个。
这是因为id对所有的divs都是一样的吗如果是这样的话我该怎么去解决这个问题呢?
代码:

<div class = "profile">
 {% for i in profile %}
 <button onclick="toggle()">Show Form</button>
 ...
 <div class ="form" id = "toggle_display">
  <form method="POST" enctype="multipart/form-data">
      <input type="text" name="username">
      <button class="uploadPost" type="submit">submit</button>
  </form>
 </div>
 {% endfor %}
</div>

Javascript:

function toggle() {
  var x = document.getElementById("toggle_display");
  if (x.style.display === "none") {
    x.style.display = "block";
  } else {
    x.style.display = "none";
  }
}
wgx48brx

wgx48brx1#

正如epascarello已经提到的,id引用的是一个元素,你需要用一个id使每一个section都是唯一的,你可以使用for循环计数器(如下例所示)或者使用另一个唯一的id。

<div class="profile">
  {% for i in profile %}
  <button onclick="toggle({{ forloop.counter }})">Show Form</button>
  ...
  <div class="form" id="toggle_display_{{ forloop.counter }}">
    <form method="POST" enctype="multipart/form-data">
      <input type="text" name="username">
      <button class="uploadPost" type="submit">submit</button>
    </form>
  </div>
  {% endfor %}
</div>

<script>
function toggle(id) {
  var x = document.getElementById(`toggle_display_${id}`);
  if (x.style.display === "none") {
    x.style.display = "block";
  } else {
    x.style.display = "none";
  }
}
</script>

相关问题