Autor Zpráva
PavV
Profil
Zdravím a prosím o radu,

v html mám např.
        <h1 id='ruzovyslon' class='phr'>Růžový slon v domě a jiné 
        <mark data-id="2">log</mark>
        ičnostil<span class="subtitle"><br>aneb<br>Úvod do   tajů výrokové 
        <mark data-id="3">log</mark>
        iky se zvláštním přihlédnutím k <mark data-id="4">log</mark>
        ickým hádankám a rébusům</span></h1>

a chci odstranit všechny tagy mark

v js mám
  var text = $('#text-frame').contents().find('[data-id=0]').text();

  var regex = new RegExp( /<mark data-id="\d*">log<\/mark>/, 'ig');
  $('#text-frame').contents().find('.phr').each(function() {
        $(this).html( $(this).html().replace( regex, text));
  })
což mi chodí, avšak když místo log dám proměnou text nic se neděje.
Potřebuji aby zůstal pouze označení text s respektováním velikých přímen a unikodu (vše mám v UTF-8)
Dík za radu
tttttttttttttt
Profil *
Regulární výrazy na to nejsou dobré. Zřejmě už to máš i naparsované jako HTML, tak je lepší modifikovat DOM než to převádět na text a zpět.

var div = document.createElement('div')
div.innerHTML = "  <h1 id='ruzovyslon' class='phr'>Růžový slon v domě a jiné 
        <mark data-id=\"2\">log</mark>
        ičnostil<span class=\"subtitle\"><br>aneb<br>Úvod do   tajů výrokové 
        <mark data-id=\"3\">log</mark>
        iky se zvláštním přihlédnutím k <mark data-id=\"4\">log</mark>
        ickým hádankám a rébusům</span></h1>
"

Array.from(div.getElementsByTagName("mark")).forEach((elem) =>
  elem.replaceWith(elem.innerHTML))

div.innerHTML
// "  <h1 id=\"ruzovyslon\" class=\"phr\">Růžový slon v domě a jiné 
//         log
//         ičnostil<span class=\"subtitle\"><br>aneb<br>Úvod do   tajů výrokové 
//         log
//         iky se zvláštním přihlédnutím k log
//         ickým hádankám a rébusům</span></h1>
// 
// "

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0