2014-03-13 32 views
3

I'hv rgba這種格式的值RGBA(205,31,31,1)我想分離每個紅色,綠色,藍色和alpha值進一步處理如何使用jQuery實現它; 所以輸出看起來像單獨紅綠藍值rgba顏值

red = 205 
green = 31 
blue = 31 
alpha =1 
+1

使用正則表達式爲目標的'RGBA內的一切()'。然後取這個值,用'「,」'分割。嘗試一下,並回到你遇到的具體問題。這可能甚至可以用一個正則表達式來完成,而不必拆分 – Ian

回答

2

從字符串變量獲取這些值很容易與下面的答案,所以你並不需要jQuery的

隨着regex的幫助下,你可以很容易地實現它像

var color = "RGBA(205,31,31,1)"; 
var regExp = /\(([^)]+)\)/; // get the values within() 
var matches = regExp.exec(color); 
var splits = matches[1].split(','); 
alert("red: " + splits[0] + "green: " + splits[1]+ "blue: "+ splits[2]+ "alpha: " +splits[3]); 

JSFiddle

但是要從元素獲取rgba值,可以使用jQuery的css方法。

0
var string = "RGBA(205,31,31,1)"; 

var colors = []; 

string = string.replace(/[rgba\(\)]/gi, ''); // remove unnecessary characters 

string = string.split(","); // split by comma 

for(var i = 0;i < string.length; i++){ 
    colors.push(parseFloat(string[i], 10)); // parse the integer and push in colors array 
} 


console.log(colors); // [ 205, 31, 31, 1 ] the values are in RGBA order 
-1

簡單現代的方法:

"RGBA(205,31,31,1)".match(/[\d\.]+/g).map(Number); //==[205, 31, 31, 1] 

,或者如果你想要一個對象,這是一個有點更多的工作:

"RGBA(205,31,31,1)".match(/[\d\.]+/g).map(Number) 
    .reduce(function(a,b,i){ 
     a[["red","blue","green","alpha"][i]]=b; 
    return a; 
    }, {}); // == {red: 205, blue: 31, green: 31, alpha: 1} 

使用「」 .match()是不錯的,因爲它忽略空格 - 「rgba」文本的數字和大小寫之間。

0

沒有正則表達式:

var colorString = "rgba(111,222,333,0.5)", 
    colorsOnly = colorString.substring(colorString.indexOf('(') + 1, colorString.lastIndexOf(')')).split(/,\s*/), 
    red = colorsOnly[0], 
    green = colorsOnly[1], 
    blue = colorsOnly[2], 
    opacity = colorsOnly[3]; 
相關問題