Javascript变暗背景颜色

时间:2011-09-20 01:51:22

标签: javascript

知道为什么这不起作用?当点击CTRL +向下箭头时,它应该会使页面的背景颜色变暗。 (它从“#cccccc”开始。)

    var color="cccccc"; 

    var isCtrl = false;
    document.onkeyup=function(e){
    if(e.which == 17) isCtrl=false;
    }
    document.onkeydown=function(e){
    if(e.which == 17) isCtrl=true;

    if(e.which == 40 && isCtrl == true) {


    if (color.length >6) { color= color.substring(1,color.length)}
    var rgb = parseInt(color, 16); 
    var r = Math.abs(((rgb >> 16) & 0xFF)+1); if (r>255) r=r-(r-255);
    var g = Math.abs(((rgb >> 8) & 0xFF)+1); if (g>255) g=g-(g-255);
    var b = Math.abs((rgb & 0xFF)+1); if (b>255) b=b-(b-255);
    r = Number(r < 0 || isNaN(r)) ? 0 : ((r > 255) ? 255 : r).toString(16); 
    if (r.length == 1) r = '0' + r;
    g = Number(g < 0 || isNaN(g)) ? 0 : ((g > 255) ? 255 : g).toString(16); 
    if (g.length == 1) g = '0' + g;
    b = Number(b < 0 || isNaN(b)) ? 0 : ((b > 255) ? 255 : b).toString(16); 
    if (b.length == 1) b = '0' + b;
    var color=r + g + b;

    document.body.style.backgroundColor="#"+color;

    }


    }

2 个答案:

答案 0 :(得分:2)

这是一段令人讨厌的小代码:

var color=r + g + b;

它正在改变颜色的范围,使它始终未定义。这会在您调用color.length时抛出错误,因为undefined没有length属性。将其更改为

color=r + g + b;

编辑:

哦,是的。演示:http://jsfiddle.net/EuShR/(按ftrl-down查看效果)

答案 1 :(得分:2)

请改为尝试:

var color = 204; // "cc" in decimal;

document.documentElement.onkeydown = function(e) {
    e = e || window.event;
    var c = e.which || e.keyCode;
    if( c == 40 && e.ctrlKey) {
        color = Math.max(color-8,0);
        document.body.style.backgroundColor = "rgb("+color+","+color+","+color+")";
    }
}