stefan: anfänger fragt:

hi,

ich möchte jeden link mit einem eventhandler versehen.

onclick="this.style.backgroundColor = '#DBD8C8',
     this.style.borderLeft = '4px solid #000000'"

da es aber viele links sind, und ich "platz sparen" möchte, würde ich dies gern dateiweit definieren.

function highlight()
{ this.style.backgroundColor = "#DBD8C8";
this.style.borderLeft = "4px solid #000000";
}

aufruf in der html - datei:

<a href="#" onclick="highlight()"> text </a>

da funktioniert aber was nicht.
wäre nett, wenn ihr mir einen tipp geben könntet

mfg stefan

  1. Hi,

    Bitte nutze ein aussagekraeftiges Subjekt, dass erhoeht Deine Chancen, gelesen zu werden, erheblich.

    document besitzt das Unterobjekt links mit der Eigenschaft length. Man kann also eine Schleife nutzen, um alle link zu durchlaufen:

    for (i=0;i<document.links.length;i++) {
      document.links[i].onclick = function() {
        ...
        ...
      }
    }

    Bitte lies solche Basics auch mal in der Javascript Referenz nach.

    Gruesse  Joachim

    1. hi

      for (i=0;i<document.links.length;i++) {
        document.links[i].onclick = function() {
          ...
          ...
        }
      }

      danke für die antwort, aber die punkte in deinem vorschlag helfen mir nicht. ich weiss nicht was dort genau rein muss, da ich blutiger anfänger bin. das soll heissen - ich hab einiges vieles probiert dort einzusetzten... es hat aber nichts wirklich funktioniert ... aber danke für die müh.

      stef

      1. hi

        for (i=0;i<document.links.length;i++) {
          document.links[i].onclick = function() {
            ...
            ...
          }
        }

        danke für die antwort, aber die punkte in deinem vorschlag helfen mir nicht. ich weiss nicht was dort genau rein muss, da ich blutiger anfänger bin. das soll heissen - ich hab einiges vieles probiert dort einzusetzten... es hat aber nichts wirklich funktioniert ... aber danke für die müh.

        Du weist da oben dem onclick Eventhandler von jedem Link eine Funktion zu. Das einizige was du jetzt noch selber machen musst, ist die Funktion mit "Leben" zu füllen, z.b. das was du in deinem 1.Posting schriebst einzutragen.

        Struppi.

      2. Hi,

        for (i=0;i<document.links.length;i++) {
          document.links[i].onclick = function() {
            ...
            ...
          }
        }

        na beispielsweise:

        alert(this);
        oder
        this.style.color="red";
        oder...

        das "this" die Referenz auf das uebergeordnete Objekt, hier also der aktuellen Link des Schleifendurchlaufes ist, weisst Du?
        Ansonsten solltest Du Dich mit solchen Basics wie Schleifen mal vertraut machen, es gibt hier wirklich eine brauchbare Referenz

        Gruesse  Joachim

  2. Hallo,

    function highlight()
    { this.style.backgroundColor = "#DBD8C8";
    this.style.borderLeft = "4px solid #000000";
    }

    Schau dir doch mal die beiden Code-Zeilen an und überlege, was diese eigentlich machen.

    mit dem Schlüsselwort "this" wird auf das aktuelle Objekt verwiesen. Aber welches Objekt ist es denn nun? Das weiss die Funktion ja nicht, woher auch? Diese wird ja nur aufgerufen und kann ggf. eine Rückgabewert liefern. Von wem sie aber aufgerufen wurde, weiss die Funktion nicht... ;o)

    Du musst also Dein Script so anpassen, dass Du als Übergabeparameter für die Funktion das aktuelle Objekt mitlieferst und das Skript so anpassen, dass auch die Eigenschaften des aktuellen Objekts bearbeitet werden.

    Viel Erfolg...

    Alex :)

    --
    ss:| zu:) ls:# fo:) de:[ va:) ch:) sh:| n4:# rl:° br:^ js:| ie:| fl:( mo:|