0
工作在「最終顏色轉換器」就像做的事情一樣,我可以將顏色模型轉換爲HSL,但由於某種原因,當我將HSL轉換回來時,整個事情都會中斷。我甚至不能再提交。輸出停止和調試不起作用
我也在破解代碼的地方添加了一堆調試行,但沒有任何結果報告給控制檯。
我當前的項目可以在這裏找到:http://codepen.io/spedwards/pen/ikJxH或http://jsfiddle.net/spedwards/se5yU/
由於代碼是很長,我就可以發佈了整個事情,但只是它的部分避免。
else if (type == 'hsl') {
hsl = type;console.debug(hsl = type);
/* START RGB */
c = type.slice(4).split(',');console.debug('Removed first 4 chars');
c[2] = c[2].substring(0, c[2].length - 1);console.debug('Removed last bracket');
c = hslToRgb(c[0],c[1],c[2]);console.debug('Convert to RGB');
rgb = 'rgb(' + c.join() + ')';console.debug('Sets RGB');
/* END RGB */
/* START RGBA */
rgba = (rgb.substring(0, rgb.length - 1) + ',1)').splice(3,0,'a');console.debug('Sets RGBA');
/* END RGBA */
/* START HEX */
hex = '#';console.debug('Starts hex');
for (i=0;i<3;i++) {
c[i] = +c[i];console.debug('Coerces to number: ' + i);
hex += (c[i] < 16 ? "0" : "") + c[i].toString(16).toUpperCase();console.debug('Sets hex part: ' + i);
}
/* END HEX */
}
function hslToRgb(h, s, l){
var r, g, b;
if(s == 0){
r = g = b = l; // achromatic
}else{
function hue2rgb(p, q, t){
if(t < 0) t += 1;
if(t > 1) t -= 1;
if(t < 1/6) return p + (q - p) * 6 * t;
if(t < 1/2) return q;
if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
return p;
}
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h + 1/3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1/3);
}
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
我要指出,type
進來爲hsl(0,0,1)
或任何正在輸入。