Hallo, JSBETTERER!
Zuallererst: als Datenformat verwendest Du hier Dash-separierten Text, was insbesondere dann zum Problem werden kann, wenn eine der Daten selbst ein | enthalten könnte. Weiterhin schreibst Du eben diesen Text teilweise ohne weitere Prüfung in das innerHTML Deiner Seite, was wiederum ein Einfallstor für Cross-Site-Scripting darstellen könnte.
Hm okay.. Ich weiß aber 100%ig welche Daten kommen. Also ein | kann nicht kommen, jedenfalls nicht aus dem Ajax-Request.
Es wäre zur Steigerng der Sicherheit empfehlenswert, 1. JSON als Format zu wählen (korrekter Parser vorausgesetzt) und 2. die Werte, die eingefügt werden sollen, mittels einer RegExp zu validieren.
Ich soltle vllt. erwähnen das dieses Skript alle 300ms aufgerufen wird vom Clienten.
Als nächstes steht beim Befüllen von auctionprice2 ein leeres var ohne Variable oder Deklaration, was normalerweise zu einem Fehler führen sollte.
Wieso ein leeres var? Da steht doch "price" welches so ziemlich direkt davor deklariert wird.
Dann hast Du hier einen ziemlichen Spaghetticode (ohne Carbonara), der ziemlich wiederkehrende Aktionen (das Befüllen eines Nodes mit funktional aus den GET-Daten errechneten Informationen) untereinander schreibt. Das kann man durch eine Schleife über ein Objekt eleganter (und auch flexibler) handhaben:
Hmm.. den folgenden Conde verstehe ich leider nicht ganz.
Was wird gemacht?
Die Nodes sind alle an verschiedenen Stellen auf der Seite.
// gather data in object "data"
var fields = {
'auctionprice': function() { return (data.price || '?').replace(/<.*?>/,''); },
'auctionprice2': ...
}, field;
for (field in fields) {
if (!fields.hasOwnProperty(field)) { continue; }
(document.getElementById(field) || {}).innerHTML = fieldsfield;
}
Ist das schneller? Sicherer?
Zuletzt fällt mir auf, dass Du offenbar sehr viele Dinge als gegeben annimmst, was die Robustheit Deines Codes deutlich reduziert. Was, wenn ein Feld gelöscht wurde?
Meinst du wenn ein Node nicht mehr da Ist?
Was, wenn ein Interval nicht gesetzt ist? Was, wenn das DOM noch nicht komplett befüllt ist oder getReq() keinen XMLHttpRequest zurückliefert?
Stimmt das sollte ich vllt. mal angeben. Es soll einfach nichts passieren.
Danke, Lg,
jsbetterer