无法通过javascript获得转换价值

时间:2016-03-28 18:08:44

标签: javascript jquery function parameters

我正在转换rgb到hsl。但我没有任何价值。它只是说“[object Object]”。我知道我做错了什么。但我找不到出了什么问题。这是 fiddle ,以下是代码:

$(function() {
    function hueToRgb(t1, t2, hue) {
        if (hue < 0) hue += 6;
        if (hue >= 6) hue -= 6;
        if (hue < 1) return (t2 - t1) * hue + t1;
        else if(hue < 3) return t2;
        else if(hue < 4) return (t2 - t1) * (4 - hue) + t1;
        else return t1;
    } 
    function hslToRgb(hue, sat, light) {
        var t1, t2, r, g, b;
        hue = hue / 60;        
        if ( light <= 0.5 ) {
          t2 = light * (sat + 1);
        } else {
            t2 = light + sat - (light * sat);
        }
        t1 = light * 2 - t2;
        r = hueToRgb(t1, t2, hue + 2) * 255;
        g = hueToRgb(t1, t2, hue) * 255;
        b = hueToRgb(t1, t2, hue - 2) * 255;
        return {r : r, g : g, b : b};
    }
    document.getElementById("slidevalue2").innerHTML = hslToRgb(0, 100, 50);
});

2 个答案:

答案 0 :(得分:2)

当你将innerHTML的值设置为一个Object时,它会调用toString()并得到[Object object]。因此,解决方案取决于您希望如何输出。

您可以调用JSON.stringify

document.getElementById("slidevalue2").innerHTML = JSON.stringify(hslToRgb(0, 100, 50));

或者您可以参考作品

var parts = hslToRgb(0, 100, 50);
document.getElementById("slidevalue2").innerHTML = "r:" + parts.r + " g: " + parts.g + " b: " + parts.b;

或者您可以定义toString

&#13;
&#13;
var obj = { 
  r:1,
  b:2,
  toString : function () {
      return "r: " + this.r + " b:" + this.b
  }
};

document.getElementById("out").innerHTML = obj;
&#13;
<div id="out"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

hslToRgb()正在返回一个对象,而不是一个字符串。也许你想试试document.getElementById("slidevalue2").innerHTML = JSON.stringify(hslToRgb(0, 100, 50));