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

标签 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 % 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');

当我输入convert(13, 49, 96)时,它会正确转换它,但我的设置方式不起作用。谁能提供一些见解?

编辑

这是我正在使用的CSS:

    #box1 {background-color:#0d3160;}
    #box2 {background-color:#ffffff;}
    #box3 {background-color:#ecebe3;}
    #box4 {background-color:#242e35;}

这是 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>';
}

变化随之而来

convert.apply(this,clear.split(','))

将变量clear转换为数字数组,然后将它们作为参数传递给函数convert。

关于javascript parseInt() 仅转换前两个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30264962/

相关文章:

javascript - TypeError : ctx. onCreditChange 不是一个函数 Angular

单击链接时的 JavaScript 弹出警报

javascript - 如何在 css flexbox 下方写一些东西

javascript - 使用 moment.js 如何将 moment 对象转换为分钟?

javascript - Nodejs SQL 连接和异步模块

javascript - 尝试 POST 时无法从请求正文获取对象的值 [Node.js、MySQL]

javascript - 将 Node.js 的 REPL 返回值从下划线 _ 更改为其他值?

javascript - SpiderMonkey 堆栈跟踪中的函数名称

javascript - 自调用函数 javascript 来清理全局命名空间上的变量

javascript - Angular 从未提供resumeBootstrap