molily: neuer Beitrag "Tipps&Tricks": DHTML/Fullrowselect

Beitrag lesen

Hallo, Orlando (und Andreas),

Ein paar Anmerkungen:

Dürfen überhaupt zwei label-Elemente für ein Eingabefeld existieren...? (Im Zweifel würde ich es so lassen und auf XForms warten. ;-))

Der Code geht über zwei Bildschirmbreiten bei 1024x768, man bedenke dass es <pre> ist, also explizit white-space:nowrap, zudem ist es pixelgenaue Schrift, die sich im IE nicht skalieren lässt). Spätestens (!) bei 110-120 Zeichen pro Zeile würde ich einen Zeilenumbruch machen, auch wenn es mitten im Element-Starttag natürlich schwierig ist. Zwei Beispiele:

<tr class="unchecked" id="rownr1"><td><input type="checkbox" id="checknr1" name="checknr1" onclick="return rowclickedcheck('checknr1','rownr1');" onkeyup="return rowclickedcheck('checknr1','rownr1');"></td><td><label for="checknr1">Vereinigtes Königreich von Großbritannien und Nordirland</label></td><td><label for="checknr1">London</label></td></tr>

--->

<tr class="unchecked" id="rownr1">
<td><input type="checkbox" id="checknr1" name="checknr1" onclick="return rowclickedcheck('checknr1','rownr1');" onkeyup="return rowclickedcheck('checknr1','rownr1');"></td>
<td><label for="checknr1">Vereinigtes Königreich von Großbritannien und Nordirland</label></td>
<td><label for="checknr1">London</label></td>
</tr>

und

window.setTimeout("colorizeRow('"+checkid+"','"+rowid+"')",300); //delay ist notwendig, weil der Eventhandler ausgelöst wird, bevor die Checkbox umgeschaltet wird...

--->

// delay ist notwendig, weil der Eventhandler ausgelöst wird,
// bevor die Checkbox umgeschaltet wird...
window.setTimeout("colorizeRow('"+checkid+"','"+rowid+"')",300);

Und so weiter.  Das ist schon viel übersichtlicher. Ich würde nicht "harte" Tabulatoren für Einrückungen benutzen, besser je Einrückebene X Blanks (ich verwende immer X=1).

Lange Strings kann man theoretisch auch einfach in mehrere Zeilen umbrechen:

string="murks murks murks murks murks murks"+
       "murks murks murks murks murks murks"+
       "murks murks murks murks murks murks";

Ansonsten:

"auf einee Checkbox"
         ^
"idrow = "" + idrowcommon + i;;"
                              ^

Ich würde Attribute und Elemente mit <code> kennzeichnen (nur ein Vorschlag), bspw.: "...wird durch den Wert im <code>for</code>-Attribut erreicht, der mit dem <code>id</code>-Wert [oder <var>? ;)] des <code>input</code>-Elements übereinstimmen muss"

Unter "Beachten Sie" fehlt, dass das label-Element nicht nur nicht im NS4 funktioniert, sondern ihn auch umgehen zum Crash veranlasst... insofern ist dann nichts mehr "voll funktionsfähig". ;)

Hm, der 300ms-Timeout zieht sich inklusive Rendern bei mir (P133) bis zu einer Sekunde hin (im Hintergrund läuft Les Nuits von Nightmares on Wax in 192kbps und verbraucht 85% der Rechenkapazität... ;-))

Abgesehen davon sind mir keine Fehler aufgefallen. Vielen Dank an Andreas für den Artikel, "gute Arbeit". :)

Vielleicht beschäftige ich mich in den nächsten Tagen noch einmal genauer und "optimiere" möglicherweise etwas bzw. spiele ein wenig damit herum (soll nicht heißen, dass es etwas zu optimieren gäbe). ;)

Mathias
(Der, der gerade den IE benutzt, um den Artikel auszutesten. :))