Autor Zpráva
SwimX
Profil
Dobrý den,

na stránkách dělám ochranu emailu. V db mám
Svvimx@gmail.com
. Do stránek načítám (přes str replace)
SvvimX (zavináč) gmail (tečka) com
a to ve stylu
Svvimx <span class='zav'><i>(zavináč)</i></span> gmail <span class='dot'><i>(tečka)</i></span> com

s tím, že zavináč a tečka je tam trojjazyčně.

Potřeboval bych poradit jak pomocí JS změnit <span class='zav'><i>neco</i></span> na @ a stejně tak i tečku.

Děkuji za veškeré rady.
Radek9
Profil
<script type="text/javascript">
document.getElementsByClassName("zav").innerHTML = document.getElementsByClassName("zav").innerHTML.replace("(zavináč)","@");
document.getElementsByClassName("dot").innerHTML = document.getElementsByClassName("dot").innerHTML.replace("(tečka)",".");
</script>

Edit: Omlouvám se za chybu :D
SwimX
Profil
Radek9
Díky ale zavináč a tečka je tam trojjazyčně.
a načitá se to z php konstant. Takže todle půjde jen u češtiny.A rád bych vyhodil spany a <i>čka. Došel jsem k takovémuto řešení, nedotaženému.
function make_email(){
var str = //načíst text z tagu <address>
var regexp="^(.+)( <span class='zav'><i>.+</i></span> )(.+)$"; 
var result=str.replace(regexp,"$1@$3");
//...
}
panther
Profil
Radek9
když už, tak
document.getElementsByClass
_es
Profil
panther
když už, tak
alebo radšej tak:
document.getElementsByClassName
alebo ešte radšej nejak inak.
SwimX
Profil
_es
poradil bys? :) vím, že víš :)
_es
Profil
SwimX
Vyložil si si to trochu chybne:
Vyskúšaj si v rôznych prehliadačoch v adresovom políčku:
javascript:alert(document.getElementsByClassName)
aj ostatné "varianty" získania elementov.
Nesnažil som sa naznačiť, že hneď viem kompletné riešenie, len dať informáciu o slepej uličke.
Alebo že tie iné varianty treba niekde nejak dodefinovať.
SwimX
Profil
vyřešil jsem to takto:
<p id='email'>lzavit<span class='tecka'> <i>(tecka)</i> </span>kovskky<span id='zav'> <i>(zavináč)</i> </span>gmail<span class='tecka'> <i>(tecka)</i> </span>com</p>
  
<script>

  document.getElementById('zav').innerHTML='@';
  
  var str=document.getElementById('email'); 
  
  var re2=/(<span\sclass=.+?>\s<i>\(.+?\)<\/i>\s<\/span>)+?/gi; 
  
  str.innerHTML=str.innerHTML.replace(re2,"."); 


</script>


nevím zda je to nejefektivnější, ale běhá mi to :)
watchick
Profil
Nejsem si jist, ale
  document.getElementById('zav').innerHTML='@';

nezmění tohle nahodou
jan.zavitek@seznam.cz
->
jan.@itek@seznam.cz
?
Leo
Profil
getElementsByClassName nefunguje automaticky ve vsech prohlizecich, Leo
SwimX
Profil
watchick:
nezmění tohle nahodou
ne, vždyť to hledá element s id zav, nikoliv v prostém textu výskyt slova "zav"
<mimo-téma>zavitek je Lukáš</mimo-téma>
navíc todle "jan.zavitek@seznam.cz" se tam nikde nevyskytuje. V kódu uvidíte leda:
<p id='email'>lzavit<span class='tecka'> <i>(tecka)</i> </span>kovskky<span id='zav'> <i>(zavináč)</i> </span>gmail<span class='tecka'> <i>(tecka)</i> </span>com</p>


Leo:
getElementsByClassName
jsem přeci nepoužil, ale díky za info :)

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: