Würde gern noch ein paar Details nachfragen:
if(!e) return alert ('usage: createElement(document, "element")');
hab' ich noch nie gesehen. Warum gibts Du das alert da zurück? Damit in der Funktion nicht weitergemacht wird?
Ja, es soll ein element erzeugt werden, aber wenn der funktion kein 2. Parameter übergeben wird ist die Funktion falsch aufgerufen worden. Das alert() soll dann ein hinweis sein, was falsch ist.
und hier:
for(var i = 2; i < (arguments.length ); i++,i++)
i++, i++ soll bedeuten: i += 2 ja?
Ja, ++/-- sind (normalerweise) sehr schnelle Operationen, daher hab ich diesen den Vorzug gegeben. Das dürfte aber mit JS egal sein. (das kommt ncoh aus der Zeit als ich C programmiert habe, ++/-- sind auf CPU ebene ein Byte Befehle, während eine Addition mindestens zwei braucht, du sparst dadurch ein paar CPU Takte ;-) )
Die Zeitmessung habe ich auch mal gemacht. Hab wg. langsamem Rechner erheblich höhere Zeiten, aber auch ein überzeugendes Verhältnis von 5-25 : 1 zungunsten von innerHTML. Es kommt sehr darauf an, wieviele Schleifendurchläufe man macht.
Der Punkt dabei ist, wie hier schon erklärt wurde, das innerHTML intern das ganze parsen muss um dann mit den DOM Methoden die Elemente einzufügen. innerHTML ist also lediglich ein Umweg
Das mit den arguments hättest du auch in selfhtml nachlesen können http://de.selfhtml.org/javascript/objekte/function.htm#arguments ;-)
Struppi.