Antwort #1 am: 26. Juli 2012, 13:16:15
hmm.. so ganz kapier ich dieses Skript nicht. Wo hast Du es her?
a ist wohl ein Array in dem alle anchor tags drinstehen (var a = document.getElementsByTagname['a']). url ein String in dem irgendwelche URLs zu finden sind? Das Array der anchors wird durchlaufen und in der zweiten Zeile geschaut, ob der href im url String vorkommt. Ausserdem muss der Link länger sein als nLength vorgibt.
if (url.indexOf(a[i].href.toLowerCase()) != -1 && a[i].href.length > nLength) {
Wenn das der Fall ist, wird diesem anchor das Attribut i mit dem Counterwert vergeben und die Variable k wird auch auf den Counterwert gesetzt.
Dann wird geschaut, ob es überhaupt Treffer gab (k nicht mehr -1?). Sollte es keine Treffer gegeben haben, wird der zweite Block angegangen.
if (k == -1 && /:\/\/(?:www\.)?[^.\/]+?\.[^.\/]+\/?$/.test) {
In diesem if ist mir der zweite Teil suspekt. Die Methode
test wird normalerweise anders verwendet. Normalerweise schreibt man
stringvariable.test(RegExAusdruck). Der reguläre Ausdruck jedenfalls prüft auf ein String das mit
/ anfängt, www. möglicherweise beinhaltet (kein Muss). Sowie weitere Zeichen, die jedoch nicht mit ./ abgeschlossen werden, plus einem . und wieder weiteren Zeichen die nicht mit ./ enden.
Wieder wird das Array der anchors durchlaufen und geschaut ob es eines gibt, welches das Attribut
maptopuredomain beinhaltet. Falls ja, wird k auf den Counterwert gesetzt und die Schleife unterbrochen. Sollte diese Schleife auch keine Treffer bringen und das Attribut nicht aufzufinden sein
if (k == -1 && a[0].getAttribute("maptopuredomain") != "false")
wird k auf 0 gesetzt. Die 0 hat einen späteren Sinn. Ich möchte bemerken, dass in dem oberen if die Überprüfung von
k == -1 unnötig ist, das man in diesen Bereich gar nicht hinein kommt, wenn k nicht vorher schon -1 gewesen ist.
Am Ende wird das anchor Array ein letztes Mal durchlaufen. Hat der Counter nicht denselben Wert wie die Treffervariable
k werden die onmouseover und onmouseout funktionen für das jeweilige anchor gesetzt. Danach folgt noch eine direkte Reaktion die wohl Farben setzt. k = 0 hat hierbei den Sinn, das, sollte es im zweiten Check keinen Treffer geben, der erste anchor Tag als Treffer angenommen wird (Index 0, Arrays fangen bei 0 an zu zähen).
Da ich dieses Skript nicht in Aktion kenne, kann ich Dir nur sagen, was die einzelnen Zeilen bedeuten und welchen wahrscheinlichen Sinn sie haben. Hoffe, es hilft Dir ein wenig.