Javascript 不使用regExp验证RGB颜色
Javascript 不使用regExp验证RGB颜色,javascript,Javascript,我的代码给出了意外的输出。如果输入为RGB(“RGB(255255)”),我将尝试返回布尔值。 谁能告诉我哪里出了问题 function checkRGB(input) { var i, elem, validRGB; validRGB = false; // if input is within “rgb(”x,x,x“)“, should continue to execute if((input.slice(0, 4) === "rgb(") && (inp
我的代码给出了意外的输出。如果输入为RGB(“RGB(255255)”),我将尝试返回布尔值。 谁能告诉我哪里出了问题
function checkRGB(input) {
var i, elem, validRGB;
validRGB = false;
// if input is within “rgb(”x,x,x“)“, should continue to execute
if((input.slice(0, 4) === "rgb(") && (input.slice(-1) === ")")) {
// Getting only "x, x, x," elements and make them array;
elem = input.slice(4, -1).split(",");
// Looping through array elements
for(i = 0; i < elem.length; i++) {
elem[i] = parseInt(elem[i]);
// if array elements > 0 and <= 255 , return true;
if((elem[i] >= 0 && elem[i] <= 255)) {
validRGB = true;
}
}
}
return validRGB;
};
checkRGB("rgb(0,0,300)"); // returns true; should be false;
checkRGB("rgb(0,-1,0)"); // returns true; should be false;
功能检查RGB(输入){
变量i、elem、validRGB;
validRGB=假;
//如果输入在“rgb(“x,x,x”)”内,则应继续执行
if((input.slice(0,4)==“rgb”()&&(input.slice(-1)==”)){
//只获取“x,x,x”元素并使其成为数组;
elem=input.slice(4,-1).split(“,”);
//通过数组元素循环
对于(i=0;i //如果数组元素>0且=0&&elem[i]使用else
语句并break
循环
if ((elem[i] >= 0 && elem[i] <= 255)) {
validRGB = true;
}
else {
validRGB = false;
break;
}
if((elem[i]>=0&&elem[i]返回值由最后一个elem确定
+也许我的回答还不够
问题是,您正在检查三个值。
在示例rgb(0,0300)中,第二个循环使validRGB为true,第三个循环将被跳过,因为300不大于0也不小于255
另一方面,“rgb(0,-1,0)”,第二个循环使validRGB变为false。但在第三个循环中它变为true。试试这段代码
根据您的代码,如果颜色(RGB中的B)的最后一个是255
and',甚至只是返回。既然我看到了,让我再问一次,您为什么要做这些检查?是为了得到有效的CSS值吗?在这种情况下,不要自己做,有更简单的方法。您不在乎rgba()
?还要注意,即使当前错误已修复,您仍然会出现误报,如checkRGB('rgb(0foo,1bar,2baz)
。您应该将其转换为数字,而不是调用parseInt
。但这对于同样有效的符号rgb(r%,g%,b%)
。您的代码不正确,无法检查警报(checkRGB(“rgb(0.1,0,30)”);这个答案是根据OP问题写的。这不是我自己的答案。我只是建议对他提出的问题进行修改。