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:

function change()
{
this.href=this.href.replace('[kukac]', String.fromCharCode(64));
}
</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.:

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

function change (obj)
{
  obj.href = obj.href.replace('[kukac]', String.fromCharCode(64));
}
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!