javascript - 如何使用javascript在父div内显示子div而不触发其他div

标签 javascript html

   *͏͏͏抱歉,标题太大͏͏͏ *͏

我今天有一个问题想和大家讨论一下。
我遇到这个问题,当我点击按钮“COMMENT”时,它会触发 JavaScript 代码显示 CHILD.div 位于 PARENT.div 内,但它会触发上方的那个!

代码片段:

function toggleHiddenDiv(id) {
  var div = document.getElementById(id);
  div.style.display = div.style.display == "block" ? "none" : "block";
}

function toggleVisibleDiv(id) {
  var div = document.getElementById(id);
  div.style.display = div.style.display == "none" ? "block" : "none";
}
<div class="posted_post_window">
  <span class="pfpicture"><img src="img/nurkiprofil.jpg" /><span class="pfname">Nurudin Imsirovic</span></span><span class="close" onclick="this.parentNode.parentNode.removeChild(this.parentNode);"></span>
  <div class="content">Ali je ovo smor ljudi moji...</div>
  <div class="react_ui"><button>LIKE</button><button>SHARE</button><button onclick="toggleHiddenDiv('submitcontainer');">COMMENT</button><button>REPORT</button></div>
  <div class="comments_ui">
    <div class="caption">Comments</div>
    <div class="container"><br>
      <div class="pfcontainer"><img src="img/aldinprofil.jpg" alt="Profile Picture" /><span class="pfname">Aldin Hadžić</span></div>
      <span class="comment">Poz</span>
    </div>

    <div class="container"><br>
      <div class="pfcontainer"><img src="img/osmanprofil.jpg" alt="Profile Picture" /><span class="pfname">Osman Hasić</span></div>
      <span class="comment">Test123Test123Test123Test123Test123Test123Test123Test123Test123Tes
        t123Test123Test123Test123Test123Test123Test123Test123Test123Test1
        23Test123Test123Test123Test123Test123Test123Test123Test123Test123Test12
        3Test123Test123Test123Test123Test123Test123Test123Test123Test123Test123Tes
        t123Test123Test123Test123Test123Test123Test123Test123Test123Test123Test123Test
        123Test123Test123Test123Test123Test123Test123Test123Test123Test123</span>
    </div>

    <div class="container"><br>
      <div class="pfcontainer"><img src="img/eldanprofil.jpg" alt="Profile Picture" /><span class="pfname">Eldan Delić</span></div>
      <span class="comment">xDDDDDD</span>
    </div>

    <div id="submitcontainer" class="submitcontainer">
      <div class="pfcontainer">
        <img src="img/nurkiprofil.jpg" /><span class="pfname">Nurudin Imsirovic</span>
        <textarea name="s.comment" rows="4"></textarea>
      </div>
    </div>
  </div>
</div>

所以对我来说问题是

<button onclick="toggleHiddenDiv('submitcontainer');">COMMENT</button>

如何让 JavaScript 只从调用的 PARENT.div 中获取 ID?

一如既往,提前致谢!

最佳答案

您的问题是您尝试通过元素的 id 属性来定位该元素,但文档中有多个具有相同 id 的元素。这在 HTML 中是非法的,您应该删除这些 id 或使它们唯一。您还在 HTML 中使用 onclick 属性,这是非常不可取的。你应该使用 event listeners相反,但除此之外,您的按钮单击无法知道哪个容器被单击或需要定位。按照目前的情况,您可以传递对方法的上下文引用,并使用它来告诉应该显示或隐藏哪个方法。并不是说我还更改了显示/隐藏方法的语法。展望 future ,要定位 ID,您将使用 toggleHiddenDiv('#mydiv')

function toggleHiddenDiv(selector, context) {
  context = context ? context : document.body;
  var div = context.querySelector(selector);
  div.style.display = div.style.display == "block" ? "none" : "block";
}

function toggleVisibleDiv(selector, context) {
  context = context ? context : document.body;
  var div = context.querySelector(selector);
  div.style.display = div.style.display == "none" ? "block" : "none";
}
<div class="posted_post_window">
  <span class="pfpicture"><img src="img/nurkiprofil.jpg" /><span class="pfname">Nurudin Imsirovic</span></span><span class="close" onclick="this.parentNode.parentNode.removeChild(this.parentNode);"></span>
  <div class="content">Ali je ovo smor ljudi moji...</div>
  <div class="react_ui"><button>LIKE</button><button>SHARE</button><button onclick="toggleHiddenDiv('.submitcontainer', this.parentNode.parentNode);">COMMENT</button><button>REPORT</button></div>
  <div class="comments_ui">
    <div class="caption">Comments</div>
    <div class="container"><br>
      <div class="pfcontainer"><img src="img/aldinprofil.jpg" alt="Profile Picture" /><span class="pfname">Aldin Hadžić</span></div>
      <span class="comment">Poz</span>
    </div>

    <div class="container"><br>
      <div class="pfcontainer"><img src="img/osmanprofil.jpg" alt="Profile Picture" /><span class="pfname">Osman Hasić</span></div>
      <span class="comment">Test123Test123Test123Test123Test123Test123Test123Test123Test123Tes
        t123Test123Test123Test123Test123Test123Test123Test123Test123Test1
        23Test123Test123Test123Test123Test123Test123Test123Test123Test123Test12
        3Test123Test123Test123Test123Test123Test123Test123Test123Test123Test123Tes
        t123Test123Test123Test123Test123Test123Test123Test123Test123Test123Test123Test
        123Test123Test123Test123Test123Test123Test123Test123Test123Test123</span>
    </div>

    <div class="container"><br>
      <div class="pfcontainer"><img src="img/eldanprofil.jpg" alt="Profile Picture" /><span class="pfname">Eldan Delić</span></div>
      <span class="comment">xDDDDDD</span>
    </div>

    <div class="submitcontainer" style="display:none">
      <div class="pfcontainer">
        <img src="img/nurkiprofil.jpg" /><span class="pfname">Nurudin Imsirovic</span>
        <textarea name="s.comment" rows="4"></textarea>
      </div>
    </div>
  </div>
</div>

关于javascript - 如何使用javascript在父div内显示子div而不触发其他div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44531550/

相关文章:

javascript - 如何使用 Chrome 开发工具调试基于 v8 的远程应用程序

javascript - 重新排序 <ul> 的显示顺序

javascript - 使用正则表达式从 javascript 中提取值

html - Bootstrap 下拉菜单在可滚动容器后面被截断

javascript - 如何制作交互式元素的网格?

html - 如何为<p>标签设置两组不同的属性?

javascript - 如何将事件监听器绑定(bind)到动态生成的内容?

javascript - codebehind webmethod 没有使用 jquery ajax 和 knockout 来调用我尝试了很多东西但失败了

html - HTML 和 CSS 的布局问题 - 由于其他元素的高度,无法将 div 紧贴地移动到新位置

javascript - Jquery循环遍历表中的所有行,没有第一行