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

180
Visualizações
Copia de Javascript al portapapeles cuando no conoce la ID

Tengo una tabla con varias columnas y quiero que el usuario pueda copiar texto en una celda haciendo clic en ella. Este es contenido dinámico, por lo que no sé cuál será la ID o la clase en ese momento.

Esto funciona para mí, pero obviamente no funcionará debido a getElementById . ¿Cómo podría hacerlo para que la copia funcione para la celda en la que se hace clic?

 function copyAddress() { /* Get the text field */ var copyText = document.getElementById("address"); /* Select the text field */ copyText.select(); copyText.setSelectionRange(0, 99999); /* For mobile devices */ /* Copy the text inside the text field */ navigator.clipboard.writeText(copyText.value); }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Hola, si desea copiar el texto en la tabla dinámica, primero deberá seleccionar el elemento. ya que no está seguro de cuál es la clase/identificación, simplemente debe seleccionar el elemento html

digamos que tengo esta tabla y quería seleccionar todo el texto interior dentro de td

 <table > <tr> <th>Company</th> <th>Contact</th> <th>Country</th> </tr> <tr> <td>Alfreds Futterkiste</td> <td>Maria Anders</td> <td>Germany</td> </tr> <tr> <td>Centro comercial Moctezuma</td> <td>Francisco Chang</td> <td>Mexico</td> </tr> </table>

podrías hacer en javascript es

let content = document.querySelectorAll('table tr td'); // Todos los td serán seleccionados y agregados a NodeList

después de eso, querrá convertir esa lista de nodos en una matriz.

let contentArr = Array.from(content) // puedes usar Array.from

luego simplemente recorra todos los elementos que tiene y para cada uno agregue un detector de eventos (haga clic), luego obtenga el texto interno y cópielo en el portapapeles. Puedes comprobarlo aquí Espero que te ayude

 contentArr.forEach((element) => { element.addEventListener("click", (e) => { let copyText = e.target.innerText navigator.clipboard.writeText(copyText); }); });

EDITAR: vi en uno de los comentarios que así es como detectas el clic

si ese es el caso, ¿la función onclick se agrega automáticamente en el div que desea seleccionar? en caso afirmativo

lo que puedes hacer es

<div onclick="copyAddress(this)"> agregue esta palabra clave dentro de su función

ahora lo que puedes hacer en javascript es

 function copyAddress(e) { navigator.clipboard.writeText(e.innerText); // the e is the current element and just get the innerText and copy it to clipboard. }

EDITAR:

si este es tu formato

 <div onclick="copyAddress(this)"><textarea>text to copy</textarea></div>
 function copyAddress(e) { const copyText = e.firstChild; copyText.select(); copyText.setSelectionRange(0, 99999); navigator.clipboard.writeText(copyText.value); }
about 4 years ago · Juan Pablo Isaza Relatório

0

Supongo que te refieres a que el nombre de la clase sería diferente. Si es así, podría colocar la clase dinámica dentro de un div estático que no cambiará. Aquello podría funcionar.

 function copyAddress() { let childItem = document.getElementById("parentDivName").firstElementChild; /* Obviously you would tweak this to work for you, this is just an idea */ }
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