javascript parseInt()仅转换前两个字符

javascript parseInt()仅转换前两个字符,javascript,Javascript,我正在编写一个脚本,将rgb转换为十六进制颜色代码。但是,它只是转换前两个字符,然后对其余字符抛出一个NaN错误 以下是我所拥有的: function convert(r, g, b) { return toHex(r) + toHex(g) + toHex(b); } function toHex(c) { c = parseInt(c); return "0123456789abcdef".charAt((c - c

我正在编写一个脚本,将rgb转换为十六进制颜色代码。但是,它只是转换前两个字符,然后对其余字符抛出一个NaN错误

以下是我所拥有的:

    function convert(r, g, b) {
        return toHex(r) + toHex(g) + toHex(b);
    }

    function toHex(c) {
        c = parseInt(c);
        return "0123456789abcdef".charAt((c - c % 16) / 16) + "0123456789abcdef".charAt(c % 16);
    }

    function getStyle(id) {
        var elem = document.getElementById(id);
        var style = window.getComputedStyle(elem, null).getPropertyValue('background-color');
        var clear = style.replace(/[rgb\()]/g, '');
        document.write(clear);
        document.getElementById(id).innerHTML = '<span>#' + convert(clear) + '</span>';
    }

    getStyle('box1');
    getStyle('box2');
    getStyle('box3');
    getStyle('box4');
以下是RGB值

rgb(13, 49, 96)
rgb(255, 255, 255)
rgb(236, 235, 227)
rgb(36, 46, 53)

将字符串传递给函数时,需要将其转换为数组,并将每个元素传递给函数convert:

function getStyle(id) {
    var elem = document.getElementById(id);
    var style = window.getComputedStyle(elem, null).getPropertyValue('background-color');
    var clear = style.replace(/[rgb\()]/g, '');

    document.write(clear);
    document.getElementById(id).innerHTML = '<span>#' + convert.apply(this,clear.split(',')) + '</span>';
}

将变量clear转换为一个数字数组,然后将其作为参数传递到函数convert中。

能否发布一些toHex()的示例输入?我更新了帖子。如果这不是你想要的,请告诉我。检查这里,当你做
文档时,检查这里输出是什么?如果是像“1,2,3”这样的字符串,那么这就是问题的一部分。调用convert函数时,只传递一个值(字符串),但它需要三个值。谢谢carlos,这是一种更简单的方法。
function getStyle(id) {
    var elem = document.getElementById(id);
    var style = window.getComputedStyle(elem, null).getPropertyValue('background-color');
    var clear = style.replace(/[rgb\()]/g, '');

    document.write(clear);
    document.getElementById(id).innerHTML = '<span>#' + convert.apply(this,clear.split(',')) + '</span>';
}
convert.apply(this,clear.split(','))