NEWS
CSS ändern Javascript
-
Hallo,
ich versuche gerade in JS die CSS zu ändern, wenn sich der Zustand einer Harmony-Aktion ändert.
schedule("*/10 * * * * *", function (pwert){
var pwert="Musik";
var state=getState("harmony.0.Hub_Wohnzimmer.activities."+pwert).val;
if(state == '2')
{
log(pwert+' is off');
document.getElementByID('w00027').style.background = '#000';
}
});
Wenn ich diesen Code ausführe, bekomme ich folgende Fehlermeldung:
javascript.0 at Object. (script.js.common.TV_an_function_parameters2:7:13)
Den Logeintrag macht er, aber er ändert die CSS des Elements nicht.
Kann mir da evtl. jemand weiterhelfen?
-
bei CSS Änderung musst du die Seite reoladen..
CSS wird einmalig bei Laden der Seiten geladen und umgesetzt
-
Hallo arteck,
den "reload" würde ich noch schaffen, in den Code einzubinden.
Aber auch, wenn ich den "reload" nicht im Code habe und die Seite von Hand reloade, bekomme ich die Fehlermeldung, die im oben stehenden Post steht.
Soll heißen, dass ich nicht mal die Änderung der CSS, im Vis realisiert bekomme, weil eigentlich sollte der Code doch richtig sein?!(Wenn mich meine JS-Kenntnisse nicht ganz verlassen haben)
-
laut der Fehlermeldung ist hier der Fehler
document.getElementByID('w00027').style.background = '#000';
-
Ja und ich weiß nicht warum?
Weil der JS Code so normalerweise richtig ist.
-
Ja und ich weiß nicht warum?
Weil der JS Code so normalerweise richtig ist. `
Der Code wäre korrekt, wenn er denn auf dem Client, also im Browser ausgeführt werden würde. Wird er aber nicht. Er wird auf dem Server ausgeführt - und dort kann er nicht funktionieren, weil es keinen Browser, keine DOM Objekte gibt.Andere Lösung:
(a) Eine javascript.0 Variable anlegen, dort via Script die jeweilige Farbe reinschreiben, Bsp: javascript.0.mycolor
(b) in VIS, beim Widget w00027 in der Background-Color-Eigenschaft dann den Zugriff auf diese Variabel per ioBroker-Binding, in dem man dort {javascript.0.mycolor} eingibt
Dein Script ändert die Variable, ioBroker reicht dieses durch seine Binding-Fähigkeit an das Widget weiter.