将RGB转换为HEX问题

时间:2017-09-16 15:45:22

标签: javascript converter

根据StackOverflow主题之一,我尝试创建自己的RGB到HEX颜色转换器。

我不知道为什么,而是转换为双RGB数字。

因此,当输入为rgb(0, 128, 192)时,它会调出#00128192

我的代码是:

fromRGB: {
    toHEX: {
        supportFunc: function(number) {
            var hex = number.toString(16);
            return hex.length == 1 ? '0' + hex : hex;
        },
        convert: function(r, g, b) {
            var lol = '#' + this.supportFunc(r) + this.supportFunc(g) + this.supportFunc(b);
            console.log(lol);
        }
    },
    prepareAndExecute: function(color_field) {
        // preparing
        var numbers = color_field.match(/\d+/g);
        if(numbers.length == 3) {
            this.toHEX.convert(numbers[0], numbers[1], numbers[2]);
        } else {
            alert('wrong RGB number format');
        }


        //this.toHSL(preparedValue);
    }
}

我执行prepare函数,lol变量是应该包含HEX格式转换颜色的变量。

我的代码有什么问题,为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

<强>解释

这是因为您将字符串传递给supportFunc而不是数字。

matchprepareAndExecute的结果是一个字符串数组,因此当您在toString中调用supportFunc时,您正在调用String.prototype.toString(而不是{ {1}})按原样返回字符串。

<强>解决方案:

Number.prototype.toString中,在使用supportFunc之前将number转换为数字:

toString

或在将它们传递给var hex = Number(number).toString(16); // using Number to convert a string to a number (you can use parseInt or unary + if you like) 之前转换它们:

convert