[JS] Werte nebeneinander darstellen - die 2.

amn.ssy

Erfahrenes Mitglied
Hallo,
ich seh mal wieder den Wald vor lauter Bäumen nicht (trotz schöpferische Pause)!
Ich baue mit einer Schleife Links zusammen und gebe diese nebeneinander aus.
Soweit funktioniert das, dank der Hilfe von Quaese, mit Tabellen bzw. Zellen auch ganz gut.
Um ggf. einen Zeilenumbruch ab x Links zu erreichen, wollte ich nun die Tabellen draussen lassen und die Links direkt neben einander ausgeben.

Das Ergebnis sieht aber so aus, daß der "Cursor" sich nicht weiter bewegt und der jeweils letzte Wert einfach überschrieben wird.

Raus kommen soll z.B.: [1][2][3] - Ergebnis ist aber [3] an der ersten Stelle wo vorher 1 und 2 stand.

Wenn ich die entscheidende Stelle so schreibe:
HTML:
links.innerHTML += ('<a href="'+(i+1)+'" rel="'+i+'">'+"["+(i+1)+"]"+'</a>');
bekomme ich zwar das gewünschte Ergebnis, aber der click-Handler funktioniert nicht mehr.

Das ganze wie im nachfolgenden "Test" zu lösen scheint mich aber auch nicht wirklich weiter zu bringen.
HTML:
<script type="text/javascript">
document.write("noch ne Tabelle ohne Tabelle"+"<br>");
        var j=0
        while (j<20)
        {
        if (j < 9)
        document.write("[0"+(j+1)+"]");
        else
        document.write("["+(j+1)+"]");
        j++
        if (j%5 == 0)
        document.write("<br>");
        }
</script>

Mit der Alternative durch die "Seiten" mit nur 4 Links in der Art ([< << >> >]) zu scrollen wäre ich auch schon sehr zufrieden. Ist evtl. auch die bessere Alternative, da der User eh nicht weiß was auf der Seite 5 steht bzw. sich das ändern kann/wird.

Den kompletten Quellcode habe ich angefügt.
Ich freue mich auf euere Rückmeldungen, was auch gerne praktikable Beispiele oder Links sein dürfen die ich evtl. anpassen und mal wieder was draus lernen kann.

Grüße
_opiWahn_
 
Zuletzt bearbeitet:
Hi,

schreib den onclick-Handler in den HTML-String. Dort rufst du eine Handler-Funktion auf und übergibst ihr neben dem Event-Objekt die Referenz (this) auf das aufrufende Element.
Code:
if (zeilen > zeilenMax) {
  links.insertRow(0);
  links.rows[0].bgColor = "#7aa2be";

  links.innerHTML = "";
  for(var i = 0; i < anzLinks; i++){
    links.innerHTML += ('<a href="'+(i+1)+'" onclick="handleClick(event, this);" rel="'+i+'">'+"["+(i+1)+"]"+'</a>');
  }
}
Die Handler-Funktion notierst du ausserhalb der Funktion.
Code:
function handleClick(evt, objThis){
  (window.event)? (window.event.returnValue=false) : evt.preventDefault();
  fuelleTabelle(document, arraySuchErg, parseInt(objThis.rel));
}
Ciao
Quaese
 
Zurück