<script>
        
        //方法1
        function rgbToHex1(colorArr){
            var strHex = "#";
            for(var i=0; i<colorArr.length; i++){
                var hex = Number(colorArr[i]).toString(16);
                if(hex.length<2){
                    hex = "0" + hex;
                }
                strHex += hex;
            }
            if(strHex.length !== 7){
                strHex = str;        
            }
            return strHex;
        }
        
        //方法2
        function rgbToHex2(colorArr){
            var strHex = "#";
            var decimal = Number(colorArr[0]) * 65536 + Number(colorArr[1]) * 256 + Number(colorArr[2]);
            var hex = decimal.toString(16);
            if(hex.length<6){
                hex = '0' + hex;
            }
            strHex += hex; 
            return strHex;
        }
        
        //方法3
        function rgbToHex3(colorArr){
            r = parseInt(colorArr[0]);
            g = parseInt(colorArr[1]);
            b = parseInt(colorArr[2]);
            return "#" + ((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice(1);
        }
        
        var rgbStr = "RGB(254,2,34)";
        if(!/^(rgb|RGB)/.test(rgbStr)){
            console.log('非rgb值',rgbStr);
        }else{
            var rgbArr = rgbStr.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",");  //分割为数组
            var result = rgbArr.every(item => {  //判断rgb值是否合规则
                return item>0 && item<256
            })
            if(!result){
                console.log('错误的rgb值:',rgbStr);
            }else{
                console.log(rgbToHex1(rgbStr));
                console.log(rgbToHex2(rgbStr));
                console.log(rgbToHex3(rgbStr));
            }
        }
        
    </script>

彩虹
1 声望0 粉丝