我正在转换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);
});
答案 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
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;
答案 1 :(得分:0)
hslToRgb()
正在返回一个对象,而不是一个字符串。也许你想试试document.getElementById("slidevalue2").innerHTML = JSON.stringify(hslToRgb(0, 100, 50));
?