简体   繁体   English

如何使用Javascript为所有事件查找特定的nth-child()元素

[英]How to find a specific nth-child() element for all occurances using Javascript

I am trying to do this: 我正在尝试这样做:

when clicked on fruitSort container show the origin element (every third div of the fruitSort container, for now in red ), and I want to do this for all fruitSort containers, if user clicks fruitSort, show fruitOrigin. 当单击fruitSort容器时,显示origin元素(fruitSort容器的每个第三个div,现在为红色),我想对所有fruitSort容器执行此操作,如果用户单击fruitSort,则显示fruitOrigin。

(for obvious reasons I don't hide fruitOrigin yet ) (由于明显的原因,我还没有隐藏fruitOrigin)

I can't seem to find out how to target these nth-children properly in javascript. 我似乎无法找出如何在javascript中正确定位这些nth-children。

I want to learn pure javascript so please no Jquery. 我想学习纯JavaScript,所以请不要使用Jquery。 thanks a lot. 非常感谢。

 var fruit = document.getElementsByClassName('fruitSort'); for(var i = 0; i < fruit.length; i++) { fruit[i].addEventListener("click", showOrigin, false); } function showOrigin() { console.log("clicked"); // show every fruitSort div:nth-child(3) } 
 .fruitSort {padding:15px; border:1px solid grey;} .fruitSort div:nth-child(3) {color:tomato;} 
 <div class="fruits"> <!-- NB! No ID's present, only classes so adding an id to .fruitOrigin is not an option --> <div class="fruitSort"> <div>1</div> <div>Banana</div> <div>Latin America</div> </div> <div class="fruitSort"> <div>2</div> <div>Apple</div> <div>The Netherlands</div> </div> <div class="fruitSort"> <div>3</div> <div>Kiwi</div> <div>New Zealand</div> </div> </div> 

You can use the document.querySelectorAll, it's basically a selector that you can select using CSS selectors.. 您可以使用document.querySelectorAll,基本上是一个选择器,可以使用CSS选择器进行选择。

 var fruit = document.getElementsByClassName('fruitSort'); for(var i = 0; i < fruit.length; i++) { fruit[i].addEventListener("click", showAll, false); } function showAll(el) { //console.log("clicked"); // show every fruitSort div:nth-child(3) console.log("this = " + this.querySelector(".fruitOrigin").innerText); var found = document.querySelectorAll(".fruitSort div:nth-child(3)"); for (var x of found) console.log(x.innerText); } 
 .fruitSort {padding:15px; border:1px solid grey;} .fruitSort div:nth-child(3) {color:tomato;} 
 <div class="fruits"> <!-- NB! No ID's present, only classes so adding an id to .fruitOrigin is not an option --> <div class="fruitSort"> <div class="fruitID">1</div> <div class="fruitName">Banana</div> <div class="fruitOrigin">Latin America</div> </div> <div class="fruitSort"> <div class="fruitID">2</div> <div class="fruitName">Apple</div> <div class="fruitOrigin">The Netherlands</div> </div> <div class="fruitSort"> <div class="fruitID">3</div> <div class="fruitName">Kiwi</div> <div class="fruitOrigin">New Zealand</div> </div> </div> 

You can find children with class fruitOrigin and show them: 您可以找到带有fruitOrigin类的孩子,并显示给他们:

 var handler = function() { var origins = this.getElementsByClassName('fruitOrigin') for (var i = 0; i < origins.length; i++) { origins[i].style.display = 'block'; } } var fruit = document.getElementsByClassName('fruitSort'); for (var i = 0; i < fruit.length; i++) { fruit[i].addEventListener('click', handler, false); } 
 .fruitSort {padding:15px; border:1px solid grey;} .fruitSort div:nth-child(3) {color:tomato;} .fruitOrigin {display:none;} 
 <div class="fruits"> <!-- NB! No ID's present, only classes so adding an id to .fruitOrigin is not an option --> <div class="fruitSort"> <div class="fruitID">1</div> <div class="fruitName">Banana</div> <div class="fruitOrigin">Latin America</div> </div> <div class="fruitSort"> <div class="fruitID">2</div> <div class="fruitName">Apple</div> <div class="fruitOrigin">The Netherlands</div> </div> <div class="fruitSort"> <div class="fruitID">3</div> <div class="fruitName">Kiwi</div> <div class="fruitOrigin">New Zealand</div> </div> </div> 

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

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