简体   繁体   English

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

[英]How can I show the child div inside the parent div using javascript without triggering the others

*͏͏ ͏Sorry for huge title͏͏͏ *͏ *͏͏͏抱歉,标题太大͏*͏

I have an issue today that I want to discuss with you guys. 今天我有一个问题想与大家讨论。
I have this problem that, when I click a button "COMMENT" , it triggers JavaScript code to display a CHILD.div inside the PARENT.div , but instead it triggers the one in the upper! 我有一个问题,当我单击按钮“ COMMENT”时 ,它触发JavaScript代码以在PARENT.div中显示CHILD.div ,但是它触发了上面的一个!

Code snippet: 程式码片段:

 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> 

So the issue for me is the 所以对我来说,问题是

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

How can I make JavaScript only take ID's from the called PARENT.div? 如何才能使JavaScript仅从被调用的PARENT.div中获取ID?

As always, thanks in advance! 一如既往,预先感谢!

Your problem is that you're trying to target the element by its id attribute, but you have multiple elements with the same id in the document. 您的问题是您试图通过其id属性来定位该元素,但是在文档中有多个具有相同id的元素。 This is illegal in HTML and you should remove those ids or make them unique. 这在HTML中是非法的,您应该删除这些ID或使其唯一。 You are also using onclick attributes in your HTML this is highly inadvisable. 您还在HTML中使用onclick属性,这是极不可取的。 you should be using event listeners instead, but that aside, your button clicks have no way of knowing which container was clicked or needs targeted. 您应该改用事件监听器 ,但除此之外,单击按钮无法知道单击了哪个容器或需要确定目标容器。 As it stands, you could pass a context reference to the methods and use that to tell which one should be show or hidden. 就目前而言,您可以将上下文引用传递给方法,并使用该方法来指示应显示还是隐藏哪个方法。 Not that I've also changed the syntax for your show/hide methods. 并不是说我也更改了show / hide方法的语法。 Going forward, to target an id you would use toggleHiddenDiv('#mydiv') . 向前,要定位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> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM