[thelist] Javascript (Math Skills Needed)

Jon Hughes hughesj at firemtn.com
Wed Aug 8 13:29:41 CDT 2007


> Jon,
> 
> With a few substitutions (untested), should converge from
> original (red,green,blue) to target (red2,green2,blue2):
> 
> function digitalfilter(a,b,denominator) {
>    var c = a + (b - a)/denominator;
>    if (c < b)
>      c = Math.ceil(c);
>    else
>      c = Math.floor(c);
>    return c;
> }
> 
> function fader(element,red,green,blue,red2,green2,blue2) {
>    if (element.fade) {
>      clearTimeout(element.fade);
>    }
>    element.style.backgroundColor = rgb("+red+","+green+","+blue+")";
>    if (red == red2 && green == green2 && blue == blue2) {
>      return;
>    }
>    var newred = digitalfilter(red,red2,10);
>    var newgreen = digitalfilter(green,green2,10);
>    var newblue = digitalfilter(blue,blue2,10);
>    var repeat = function() {
>      fader(element,newred,newgreen,newblue,red2,green2,blue2)
>    };
>    element.fade = setTimeout(repeat,100);
> }

Phil,

It works great!

One small change to your code, though... there should be a '"' before
"rgb" so:

element.style.backgroundColor = "rgb("+red+","+green+","+blue+")";


Thanks a lot!

 - Jon



More information about the thelist mailing list