Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

102
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda