ugrás a tartalomhoz

AntiSpam JS probléma

Anonymous · 2005. Ápr. 24. (V), 16.37
Sziasztok!
Egy AntiSpam cuccot csináltam, s valamit nem értek. A probléma a következő:
-van egy linkem, ez:

<a id=lol href="mailto:tiny[kukac]atw.hu" onmouseover=change();>tiny[kukac]atw.hu</a>


A javascript része pedig ez:
  1. function change()  
  2. {  
  3. this.href=this.href.replace('[kukac]', String.fromCharCode(64));  
  4. }  
  5. </script>  
Ha a this-sel csinálom, akkor üresnek veszi a this.hrefet. Ezt nem értem, hogy miért van.
Ha a 'lol' id-vel csinálom, akkor minden jó. Elmagyarázná valaki ezt nekem, mert nem értem, s neten sem találtam rá választ. Köszi:
Misi
 
1

nem értek hozzá nagyon, de

gerzson · 2005. Ápr. 24. (V), 17.23
nem értek hozzá nagyon, de a change() "sima, mezei" függvénként van deklarálva, amiben nem értelmes a this kulcsszó. A this speciális jelentése csak objektumok metódusán/tagfüggvényén belül használható. Az id-s megközelítés pedig azért él, mert id-n keresztül globálisan el lehet érni az elemeket (vagy miket).
testing can reveal the presence of errors, but never their absence. - Edsger Dijkstra
2

Paraméterátadás

Török Gábor · 2005. Ápr. 24. (V), 17.58
Először is használj idézőjeleket az attributumok értékei körül. Másodsorban a change() függvény hívásánál paraméterként add át a this kulcsszót, amely az éppen aktuális elemre mutat, így majd eképpen tudsz rá hivatkozni a függvényen belül. Tehát kb.:
  1. <a id="lol" href="mailto:tiny[kukac]atw.hu" onmouseover="change(this);">tiny[kukac]atw.hu</a>  
  1. function change (obj)  
  2. {  
  3.   obj.href = obj.href.replace('[kukac]', String.fromCharCode(64));  
  4. }  
Végezetül javaslom András cikkét diszkrét JavaScript témában.

--
slink
3

Köszi

Anonymous · 2005. Ápr. 24. (V), 18.34
Köszi, azt olvastam :). A spamellenes dolgo miatt van a href és nem pedig az onlick, ez pedig egy külön fájlban van :). Megnéztem, jó lett. Ezer köszönet!