a simple <div> with 5 <span> as children that end of any <span> i have <br> tag too.
when i want to select by :nth-child(x) any span element with index of more than 1 it's not worked
even selecting by document.querySelector() not worked
i test it on FireFox and Chrome too
when i removed <br> tags it's worked
how it's possible ?
console.log("i have 5 span children as well : ", document.querySelectorAll(".div1>span").length);
console.log("second span child is null : ", document.querySelector(".div1>span:nth-child(2)"));
console.log("third span child is second span element : ", document.querySelector(".div1>span:nth-child(3)").textContent);
console.log("select second element by another way: ", document.querySelectorAll(".div1>span")[1].textContent);
console.log("tag name of second child: ", document.querySelector(".div1>*:nth-child(2)").tagName);html>body>div.div1>span:nth-child(2) {
  color: blue;
}<html>
<body>
  <div class="div1">
    <span>this is example text 1</span>
    <br>
    <span>this is example text 2</span>
    <br>
    <span>this is example text 3</span>
    <br>
    <span>this is example text 4</span>
    <br>
    <span>this is example text 5</span>
    <br>
  </div>
</body>
</html> 
                        
The queries work as expected. When you run
.div1>span:nth-child(2)you are requesting for a span element that is the second child of its parent, in this case div1. Second child of div1 is a<br>and therefore you get null.As suggested by Hao Wu, you should use :nth-of-type
document.querySelector(".div1>span:nth-of-type(2)")This will search for the secondspanelement that is a child of div1