2014-03-26 33 views
0

工作在「最終顏色轉換器」就像做的事情一樣,我可以將顏色模型轉換爲HSL,但由於某種原因,當我將HSL轉換回來時,整個事情都會中斷。我甚至不能再提交。輸出停止和調試不起作用

我也在破解代碼的地方添加了一堆調試行,但沒有任何結果報告給控制檯。

我當前的項目可以在這裏找到:http://codepen.io/spedwards/pen/ikJxHhttp://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)或任何正在輸入。

回答

0

我發現我的問題是。我忘記了將type == 'hsl'更改爲colourType == 'hsl'

現在所有的作品。