Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

337
Views
¿Cómo puedo detectar el nombre de clase de un elemento usando literales de plantilla dentro de querySelector?

Tengo dos cuadros de navegación donde el primero tiene una clase CSS .one y el segundo está en blanco. Para el primer cuadro de navegación, le di un borde con JavaScript al detectar el nombre de la clase .one . Pero también obtengo un borde para el segundo cuadro de navegación aunque no tenga una clase. Aquí uso el enfoque de literales de plantilla. Sé que puedo arreglar esto usando el nombre de la clase directamente dentro del método querySelectorAll de la siguiente manera let li = document.querySelectorAll(".one > ul li"); . Pero necesito una solución de literales de plantilla que es más útil para mí para usar otros proyectos también. Principalmente necesito representar el nombre de la clase como una variable. El siguiente es mi código. Puede alguien ayudarme con esto. ¡Gracias de antemano!

 let parents = document.querySelector(".one"); let li = document.querySelectorAll(`${parents.tagName} > ul li`); li.forEach((elem)=>{elem.style.border="1px solid red"});
 nav {font-family:arial;width:15rem;} nav ul {list-style:none;padding:0;margin:1rem;padding-left:.5rem;} nav ul a {color:#777;text-decoration:none;padding:.5rem;}
 <nav class="one"> <ul> <li><a href="#">Home</a></li> <li><a href="#">About</a> <ul> <li><a href="#">Vision</a></li> <li><a href="#">Mission</a></li> </ul> </li> <li><a href="#">Contact</a></li> </ul> </nav> <br> <nav> <ul> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Contact</a></li> </ul> </nav>

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Intenta reemplazar esta línea:

 let li = document.querySelectorAll(`${parents.tagName} > ul li`);

Con este:

 let li = parents.querySelectorAll(`ul li`);

La razón por la que no funciona para usted como esperaba es porque está haciendo coincidir todos los elementos con el selector de consulta nav > ul li dentro del document , y está ignorando por completo el nombre de clase de la etiqueta de nav que ha seleccionado en los parents variable.

De lo contrario, simplemente puede hacer esto en su lugar:

 let li = document.querySelectorAll(`.one > ul li`); li.forEach((elem)=>{elem.style.border="1px solid red"});

o simplemente usa el CSS:

 .one > ul li { border: 1px solid red; }

o si desea seleccionar el primer elemento (no sé cuáles son sus intenciones, pero supongo que según su código):

 .one:first-child > ul li { border: 1px solid red; }
about 4 years ago · Juan Pablo Isaza Report

0

No necesita JavaScript. Puede ser posible solo con CSS.

 .one > ul > li { border: 1px solid red}

o en su cambio JS

 let li = document.querySelectorAll(`${parents.tagName} > ul > li`);
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!