gpt4 book ai didi

javascript - 为什么我的 JavaScript 不工作?我的正则表达式似乎有问题,但我无法弄清楚

转载 作者:行者123 更新时间:2023-11-30 09:44:47 25 4
gpt4 key购买 nike

照原样,如果您在浏览器中运行它,它将不起作用。但是,如果您要注释掉第一个“var rgbArray”并取消注释第二个“var rgbArray”,那么该脚本将起作用。

为什么第一种方式不行?

<!DOCTYPE html>
<html>
<head></head>
<body>
<script type="text/javascript">
var rgbColorString = "rgb(60, 59, 110)";
var rgbArray = parseRGBColor(rgbColorString);
// var rgbArray = [60, 59, 110]
convertRGBToHEX(rgbArray);

function parseRGBColor(rgbColorString){
var colorStringMatch = rgbColorString.match(/[0-9]{1,3}/g);
return colorStringMatch;
}

function convertRGBToHEX(rgbArray){
document.write("rgbArray: " + rgbArray + "<br>");
var hexColor = "";
for(var i=0; i<rgbArray.length; i++){
hexColor = hexColor + convertToHexString(rgbArray[i]);
}
}

function convertToHexString(base10Color){
document.write("Color In: " + base10Color + " => ");
var convertedColor = (base10Color < 16) ? ("0" + base10Color.toString(16)) : base10Color.toString(16);
document.write("Color Out: " + convertedColor + "<br>");
}
</script>
</body>
</html>

最佳答案

正则表达式总是将它们的匹配作为字符串返回,即使匹配的部分是数字。
因此,当您对数组元素调用 .toString(16) 时,它们的值保持完全相同。

您需要先更改convertToHexString 将它们转换为整数,最好使用parseInt:

<!DOCTYPE html>
<html>
<head></head>
<body>
<script type="text/javascript">
var rgbColorString = "rgb(60, 59, 110)";
var rgbArray = parseRGBColor(rgbColorString);
// var rgbArray = [60, 59, 110]
convertRGBToHEX(rgbArray);

function parseRGBColor(rgbColorString){
var colorStringMatch = rgbColorString.match(/[0-9]{1,3}/g);
return colorStringMatch;
}

function convertRGBToHEX(rgbArray){
document.write("rgbArray: " + rgbArray + "<br>");
for(var i=0; i<rgbArray.length; i++){
convertToHexString(rgbArray[i]);
}
}

function convertToHexString(base10Color){
document.write("Color In: " + base10Color + " => ");
var convertedColor = (base10Color < 16 ? "0" : "" ) + parseInt(base10Color).toString(16);
document.write("Color Out: " + convertedColor + "<br>");
}
</script>
</body>
</html>

关于javascript - 为什么我的 JavaScript 不工作?我的正则表达式似乎有问题,但我无法弄清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39322834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com