Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

111
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda