在没有regExp的情况下验证RGB颜色

时间:2017-11-02 05:04:10

标签: javascript


 我的代码给了意想不到的输出。如果输入为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;

非常感谢您的帮助! 谢谢

3 个答案:

答案 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}}将会破坏代码,请对其进行一些更改。

&#13;
&#13;
false
&#13;
&#13;
&#13;