molily: Stilkritik

Beitrag lesen

function selfhtmldatumsleser(){

Globale Funktionen, sind wir denn im 20. Jahrhundert?
Dafür nimmt man Namespaces oder besser anonyme selbstausführende Funktionen, wenn keine öffentliche API benötigt wird.

var now=new Date()*1,

Warum hier die Umwandlung in Number?
Date-Objekte werden im Zusammenhang mit dem Substraktions-Operator automatisch in Number umgewandelt.
Sämtliche mathematische Operatoren rufen ToNumber auf den Operanden auf. Diese wandeln Objects mittels ToPrimitive und [[DefaultValue]](Number) in Number-Werte um. Dies ruft die Methoden valueOf bzw. toString auf dem Objekt auf.
Wenn man weiß, wie automatische Typumwandlung in ECMAScript funktioniert, kann man sich viel unnötiges Typecasting sparen und es dort explizit einsetzen, wo Mehrdeutigkeiten geben kann.

spans=document.querySelectorAll("span.date"),
        q=spans.length;

q als Laufvariablenname? Wo sind i und j?

var diff=(now-new Date(day, month-1, year, hour, min)*1)/6E4;

*1 ist hier auch unnötig. Wenn man das schon ausführlich machen will, dann bitte verständlich mit einem expliziten getTime.

if (diff<1) {
                spans[q].style.color="#f1630c";
                spans[q].style.fontSize="150%";
            } else if (diff<4) {
                spans[q].style.color="#d96117";
                spans[q].style.fontSize="130%";
            } else if (diff<10) {
                spans[q].style.color="#fa670c";
                spans[q].style.fontSize="120%";
            } else if (diff<15) {
                spans[q].style.color="#eb6513";
                spans[q].style.fontSize="110%";
            }

Don't repeat yourself:

var color, fontSize;  
if (diff < 1) { color = 0xF1630C; fontSize = 150; }  
else if (...) ...  
var style = spans[q].style;  
style.color = '#' + color.toString(16);  
style.fontSize = fontSize + %'

(uList=document.createElement("ul")).id="listeMitMeinenPostings";

...

button.onclick=function(){
        var u=document.getElementById('listeMitMeinenPostings');

Die Zeile ist überflüssig. uList ist in der Closure verfügbar.

}

Expression Statements sollten wie alle Statements mit einem Semikolon abgeschlossen werden. Eine darin vorkommende Function Expression macht da keinen Unterschied, vielmehr ist das Semikolon noch wichtiger, um es von einer Function Declaration zu unterscheiden (Stichwort Hoisting).

root.insertBefore(myLi, root.firstChild);

...

myLi.appendChild(button);
    myLi.appendChild(uList);

Man baut aus Performancegründen erst ein Element mit seinen Inhalten zusammen und hängt es dann ins DOM ein, nicht umgekehrt.

for(i=0;i<myP.length;i++){

Wo ist i deklariert? Wieso die length nicht zwischenspeichern?

Mathias