Hallo,
Macht es aber Sinn, den colorHandler immer wieder neu zu kreiren/createn? Kann es grad nich testen, aber werden dadurch Werte nicht wieder überschrieben?
Also doch kurz Zeit gehabt: Im setIntervall wird ja die Funktion colorHandler nur genau einmal aufgerufen, nämlich um die Funktion zu erzeugen, die setIntervall dann immer wieder aufrufen soll. Habe es noch JSLint-konform gemacht und musste dafür die doppelt-Definierten Farbvariablennamen ändern, hoffentlich sinnig von "red" in "nextRed" ...;
function createColorHandler(elem, prop, red, redRange, green, greenRange, blue, blueRange) {
function createColorObj(v, r) {
var value = v, max = v, range = r, dir = 1;
return function () {
if (value <= max - range || value >= max) {
dir *= -1;
}
value += dir;
return value;
};
}
var nextRed = createColorObj(red, redRange),
nextGreen = createColorObj(green, greenRange),
nextBlue = createColorObj(blue, blueRange);
return function () {
elem[prop] = "RGB(" + nextRed() + "," + nextGreen() + "," + nextBlue() + ")";
};
}
window.onload = function () {
var myBody = document.getElementsByTagName("body")[0];
window.setInterval(createColorHandler(myBody.style, "backgroundColor", 255, 55, 168, 10, 136, 16), 120);
};
Gruß
jobo