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

275
Views
¿Cómo puedo convertir texto específico para vincular dentro de un nodo div?

NOTA : El primer requisito para esto es que no use jQuery. Tampoco quiero usar .innerHTML si puedo evitarlo (incluso si eso requiere un poco más de código)

Tengo divs dentro de una página (múltiples ubicaciones) que serán algo como esto:

 <div class="p-user-content">John Smith current working on ticket LQ-1954</div> ... again, multiple locations ... <div class="p-user-content">Sally Jones <a href="[something]">assigned</a> GM-3398 yesterday</div>

Habrá texto simple y etiquetas como <a> mezcladas con el texto como se muestra.

El siguiente script identifica con éxito todos los "nodos de texto":

 var el = document.getElementsByClassName('p-user-content'); for (var i in el) { if (typeof el[i].childNodes === 'undefined') continue for (var k in el[i].childNodes) { if (typeof el[i].childNodes[k] === 'function') continue if (el[i].childNodes[k].nodeType !== Node.TEXT_NODE) continue /** This successfully gets the nodeValue */ console.log(el[i].childNodes[k].nodeValue) } }

Lo que quiero hacer es dividir el nodo de texto palabra por palabra, y luego convertir valores como LQ-1954 y GM-3398 en elementos de anclaje, y luego reemplazar el texto modificado y los enlaces de anclaje nuevamente en el div existente. Puedo dividir el texto y hacer la parte correspondiente, pero ¿cómo podría

  1. vuelva a construir los nodos con los nuevos enlaces y
  2. reemplazarlo de nuevo en el mismo div?
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puedes usar .reemplazar

 document.body.outerHTML = document.body.outerHTML.replace(/(LQ-1954)/g , '<a> $1 </a>')
about 4 years ago · Juan Pablo Isaza Report

0

Si debe evitar manipular html cambiando el valor de innerHTML , cree un nuevo elemento y reemplace el elemento anterior con él:

 function addLinks(){ var el = document.getElementsByClassName('p-user-content'); for (var i in el) { if (typeof el[i].childNodes === 'undefined') continue let value = el[i].innerHTML.replace(/[AZ]{2}-[\d]{4}/g, (match)=>'<a href="#">' + match + '</a>'); let newDiv = document.createElement('div') newDiv.insertAdjacentHTML("beforeend", value); el[i].replaceChildren(newDiv) } }
 <div class="p-user-content">John Smith current working on ticket LQ-1954</div> ... again, multiple locations ... <div class="p-user-content">Sally Jones <a href="[something]">assigned</a> GM-3398 yesterday</div> <button onclick="addLinks()">Add Links</button>

Manera simple usando innerHTML :

 function addLinks(){ var el = document.getElementsByClassName('p-user-content'); for (var i in el) { if (typeof el[i].childNodes === 'undefined') continue el[i].innerHTML = el[i].innerHTML.replace(/[AZ]{2}-[\d]{4}/g, (match)=>'<a href="#">' + match + '</a>'); } }
 <div class="p-user-content">John Smith current working on ticket LQ-1954</div> ... again, multiple locations ... <div class="p-user-content">Sally Jones <a href="[something]">assigned</a> GM-3398 yesterday</div> <button onclick="addLinks()">Add Links</button>

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!