我的代码给了意想不到的输出。如果输入为RGB(“rgb(255,255,255)”),我试图返回布尔值。
有人能告诉我哪里出错了吗?
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;
非常感谢您的帮助! 谢谢
答案 0 :(得分:2)
使用else
语句和break
循环
if ((elem[i] >= 0 && elem[i] <= 255)) {
validRGB = true;
}
else {
validRGB = false;
break;
}
答案 1 :(得分:0)
返回值由最后一个元素决定。
+也许我的回答还不够 问题是,您正在检查三个值。 在示例rgb(0,0,300)上,第二个循环使validRGB为true,第三个循环将被跳过,因为300不大于0且不小于255。
另一方面,&#34; rgb(0,-1,0&#34;,第二个循环使validRGB变为false。但在第三个循环时它变为true。
答案 2 :(得分:0)
试试此代码
根据你的代码,如果最后一个颜色(RGB中的B)是<=255
,它将返回true。
因此,无论如何,如果颜色代码>255
和&#39;&lt; 0&#39;返回false
因此,如果在任何情况下{@ 1}}将会破坏代码,请对其进行一些更改。
false
&#13;