variable Zellenanzahl auf x je Reihe begrenzen

amn.ssy

Erfahrenes Mitglied
Hallo,

wo liegt der Fehler? Ich möchte mit eine variable Anzahl von Zellen, die in eine Tabelle geschrieben werden auf x Zellen je Reihe (z.B. 20) begrenzen. Ab 21/41/... soll dann ggf. eine neue Reihe begonnen werden.
Das was ich bis jetzt mit einer While-Schleife (zuvor verschachtelte for) und i%20==0 gebaut habe funktioniert bis genau 20 und bleibt dann hängen.

Code:
in JS:

var zeilenMax = 15;              // Anzahl der max. Zeilen je Seite
var linksMax = 20;		     // Anzahl der max. Links je Reihe
...
if (zeilen > zeilenMax)
    {	
	  var i = 0;
	  var r = 0;
	  		links.insertRow(r);
			links.rows[r].bgColor = "#7aa2be";
	  	while (i < anzLinks)
			{

			links.rows[r].insertCell(i);
			// Seitennavigationslink einfügen (+++rel-Attribut wichtig wegen Seitenindex+++)
			links.rows[r].cells[i].innerHTML = ('<a href="'+(i+1)+'" rel="'+i+'">'+"["+(i+1)+"]"+'</a>');
			// Eingefügten Link mit click-Handler versehen
			links.rows[r].cells[i].getElementsByTagName("a")[0].onclick = function(evt)
				{
				// Standardaktion (click) verhindern
				(window.event)? (window.event.returnValue=false) : evt.preventDefault();
				// Funktion zum Füllen der Tabelle mit aktuellem Offset aufrufen
				fuelleTabelle(document, arraySuchErg, parseInt(this.rel));
				};
				i++;
					if (i%linksMax == 0) // Links auf max. 20 je Reihe begrenzen, ab 21,41, ... neue Reihe
					{
					r++;
					links.insertRow(r);
					links.rows[r].bgColor = "#7aa2be";
					}
			}
    }

in HTML:

<div style="width: 50%;">
<table id="Links"></table>
</div>

Gruß

opiWahn
 
Hey!

Also 1. ist dein Code nicht sehr schön formatiert und 2. bitte nimm beim nächsten mal den HTML-Tag. SyntaxHighlighting ist was schönes!
Achte beim nächsten Mal auch ein wenig auf die Einrückung. Es ist echt schwer zu lesen wenn das alles nicht ordentlich gemacht wird.

Zum Code:
Ähm ... Refactoring!

Du hast ganz oben ein IF-Bedingung ... willst du nicht eine Schleife haben?
Wenn ja, dann widerspricht sich das mit deiner Bedingung unten (i%linksMax) denn dann müsstest du die While-Schleifenbedingung so ansetzen: (i < anzLinks*zeilen).

Nundenn, ich hab deinen Code mal überarbeitet. Ich habs nicht ausprobiert, aber es sollte zumindest ein Ansatz sein.

HTML:
<script type="text/javascript">
var zeilenMax = 15;              // Anzahl der max. Zeilen je Seite
var linksMax = 20;           // Anzahl der max. Links je Reihe

var i = 0;
var j = 0;
var r = 0;

for(i = 0; i < zeilenMax && i < zeilen; i++)
{
	links.insertRow(r);
	links.rows[r].bgColor = "#7aa2be";

	for(j = 0; j < anzLinks && j < linksMax; j++)
	{
	
		links.rows[r].insertCell(i);
		// Seitennavigationslink einfügen (+++rel-Attribut wichtig wegen Seitenindex+++)
		links.rows[r].cells[i].innerHTML = ('<a href="'+(i+1)+'" rel="'+i+'">'+"["+(i+1)+"]"+'</a>');
		// Eingefügten Link mit click-Handler versehen
		links.rows[r].cells[i].getElementsByTagName("a")[0].onclick = function(evt)
		{
			// Standardaktion (click) verhindern
			(window.event)? (window.event.returnValue=false) : evt.preventDefault();
			// Funktion zum Füllen der Tabelle mit aktuellem Offset aufrufen
			fuelleTabelle(document, arraySuchErg, parseInt(this.rel));
		};
	}
	r++;
}
</script>

greez
Dew
 
Zurück