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

101
Views
¿Cómo puedo obtener un elemento de <td><><td/> (hijo de la etiqueta td) en JavaScript DOM?
td = tr[i].getElementsByTagName("td")[3]; console.log(td);

Aquí td muestra debajo de los elementos.

 <td style="display: none;"> <strong>Category:</strong> <span id="cate_name">Rice </span><br> <strong>Product Code:</strong> 2132557596 <br> <strong>Num of Sale:</strong> 0 Times <br> <strong>Base Price:</strong> $65.00 <br> <strong>Rating:</strong> 0 <br> </td>

Solo necesito <span id="cate_name">Rice </span><br> en esta área. En detalles, solo necesito la primera línea en ¿Cómo puedo obtenerlo?

Pruebo estos, pero en la consola muestran Uncaught TypeError: No se pueden leer las propiedades de undefined (leyendo 'getElementsById' o el nombre de la etiqueta también)

 td.getElementsByID("cate_name") td.getElementsByID("cate_name").value td.getElementsByTagName("span") td.getElementsTagName("span").value and also use td[0].aboveThing
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Necesita usar innerText , no value .

 td.getElementById("cate_name").innerText td.getElementsByTagName("span").innerText

Editar:

Lo siento. He estado "cegado" por el problema del 'texto interno', y no vi más.

getElementById solo funciona con document , porque espera que los identificadores de elementos sean únicos en el documento completo.

Y getElementsByTagName devuelve una lista de nodos.

 const table = document.getElementById('id_table'); const trList = table.getElementsByTagName('tr'); // getElementById only works with document console.info(document.getElementById("cate_name").innerText) for (let i = 0; i < trList.length; i++) { const td = trList[i].getElementsByTagName("td")[0] console.info(td.getElementsByTagName("span")[0].innerText) }
 <table id="id_table"> <tr> <td> <strong>Category:</strong> <span id="cate_name">Rice </span><br> <strong>Product Code:</strong> 2132557596 <br> <strong>Num of Sale:</strong> 0 Times <br> <strong>Base Price:</strong> $65.00 <br> <strong>Rating:</strong> 0 <br> </td> </tr> </table>

about 4 years ago · Juan Pablo Isaza Report

0

El puede estar en la primera 'línea'...

Sin embargo, el modelo de objetos de documento que representa HTML no se preocupa por los saltos de línea ni por los espacios en blanco adicionales. Más bien, se trata de dónde se encuentra en el árbol. El <span> es el segundo hijo del <td>, (índice de 1), pero no sé por qué es al que intenta llegar. ¿Es la etiqueta <span> en sí misma? o el segundo elemento hijo?

Si es la ubicación del niño dentro del td, puede recuperar todos los niños en una matriz:

 td.getElementsByTagName("*")

y luego puede extraer el segundo elemento secundario (nuevamente, índice de [1]) y (opcionalmente) obtener el contenido directamente...

 td.getElementsByTagName("*")[1].textContent

Si es el hecho de que es un <span> lo que te lleva allí...

 td.getElementsByTagName("span")[0].textContent

Si necesita hacerlo mediante el atributo id="cate_name", el getElementById está disponible en el nodo del documento. Esto se debe a que el HTML correctamente formado no debe reutilizar una identificación:

 document.getElementById("cate_name").textContent

Además, esta en la consola de Chrome. Otros navegadores usan llamadas de JavaScript ligeramente diferentes, como texto interno. ¿La página ya se importó con jQuery? Si es así, se pueden evitar todas las inconsistencias entre navegadores. Puedes consultarlo con...

 $.fn.jquery

Esto obtendrá el número de versión de jQuery. Esta página, Stack Overflow, actualmente responde con '1.12.4'

Con jQuery, puede usar selectores de estilo CSS para encontrar su nodo en el DOM:

 $("tr td:nth-child(2) span#cate_name").innerText

.. o solo:

 $("#cate_name").innerText

Así que me equivoqué, td.getElementsByTagName("*") (y el asterisco entre comillas es vital) no devuelve una matriz, sino un objeto HtmlCollection especializado. Podemos convertirlo en una verdadera matriz js y manipularlo así:

 var arr = [].slice.call(td.getElementsByTagName("*")); var br = arr.find(x => x.localName == "br"); // find first line break var firstRow = arr.slice(0, arr.IndexOf(br)) // first 'row' as array segment var firstRowText = firstRow.map(x => x.innerText).Join() //if you want the whole first row text
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!