ChrisB: Wandeln von Objekt in Zahl

Beitrag lesen

Hi,

{ var InputWord33 = requestobj.responseXML.getElementsByTagName('Data') [0];
            var InputWord34 = requestobj.responseXML.getElementsByTagName('Data') [1];
            var InputWord35 = requestobj.responseXML.getElementsByTagName('Data') [2];
            var InputWord36 = requestobj.responseXML.getElementsByTagName('Data') [3];

Was soll das?
So gut wie immer, wenn jemand anfängt, Variablennamen "durchzunummerieren", möchte er eigentlich Arrays verwenden - bzw. hier in diesem Falle, dabei "bleiben".
Du erreichst doch jeden der Werte über requestobj.responseXML.getElementsByTagName('Data') - wozu also diese Umkopiererei?
(Ja, wenn es um Ergebnisse von Methoden wie getElementsByXY geht, die nach der Ermittlung vielfach gebraucht werden sollen, dann sollte man das Ergebnis des Aufrufes zwischenspeichern, weil auch der Aufruf jedes Mal ein bisschen "kostet" - aber das ist hier, wenn man die folgenden Abfragen etwas vereinfacht, vermutlich gar nicht unbedingt nötig.)

if ((1 & InputWord33) == 1) document.getElementById("K1").bgColor = '#00ff00';
            else                        document.getElementById("K1").bgColor = '#ff0000';
            if ((2 & InputWord33) == 2) document.getElementById("K2").bgColor = '#00ff00';

Was willst du denn hier *eigentlich* abfragen? Willst du wirklich den Bitoperator & verwenden, um den Inhalt des Data-Elements aus deinem XML mit einer Zahl zu verknüpfen ...? Dann kann es schon sein, dass du das erst mal in eine "richtige" Zahl umwandeln musst - dafür gibt es parseInt (bzw. parseFloat).
Aber ob das wirklich nötig ist, kommt darauf an, was genau du hier ermitteln willst - und das hast du nicht mal ansatzweise beschrieben. (Beschreiben, was du *erreichen* willst, solltest du immer - statt einfach nur unkommentierten Code abzuladen, der möglicherweise schon einen komplett in eine falsche Richtung gedachten Ansatz verfolgt. Denn dann kann man dir eventuell auch sinnvollere Alternativen vorschlagen.)

Und "kürzen" oder vereinfachen lässt sich der Code vermutlich auch noch.
Statt zig solcher if-Abfragen hintereinander zu notieren, könnte man z.B. *eine* Bedingung formulieren, die in einer Schleife durchlaufen wird - und deren Ergebniswert, also das, was du zuweisen willst, dann in einem Array hinterlegt ist, dessen nummerischer Index einfach mit der gerade abgeprüften Zahl korrespondiert.
Und da du hier requestobj.responseXML.getElementsByTagName('Data')[xy] mehrfach verwendest, wäre es dann hier angebracht, diesen Wert vor der Prüf-Schleife in einer lokalen Variablen zwischenzuspeichern, damit diese Ermittlung an dieser Stelle nicht mehrfach durchgeführt werden muss. Lokale Variable deshalb, weil der Wert nachher nicht mehr gebraucht wird (zumindest nach dem Code, den du gezeigt hast), so dass es nicht nötig ist, ihn länger aufzubewahren, oder gar vorher die Inhalte *aller* Data-Elemente in ein Array zu legen.

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.