2013-07-26 43 views
-2

我有名字,通常由SQL更新,在HTML5的名單,是有可能使相同的名稱相同的顏色與JavaScript或jQuery的...我怎樣才能將字符串轉換爲十六進制顏色與JavaScript

我試圖將字符串轉換爲十六進制,但我無法將其轉換爲顏色代碼。

問候......

+1

能否請您給幾個「名」的例子嗎? –

+1

這在目前的形式中沒有任何意義。你能澄清你的情況嗎? –

+0

「比爾」,「喬」,「奧利維亞」...但名稱可以不同... – mbultraslan

回答

2

OK,假設你沒有我一直在使用隨機顏色生成功能做到了這一點任何特定的顏色。

你可以做的是循環你的名字列表,併爲每個新名字在字典中存儲一個新的顏色值。然後,您可以查看該字典中您已使用的名稱並獲取相同的顏色。

例如:

假設你的HTML是簡單如下:

<ul></ul> 

您可以使用此javascript:

var names = [ 
    "Bill", "Joe", "Oliver", "Joe", "George", "Bill", "George", "John"]; 
var currentAssignments = {}; 

for (var i = 0; i < names.length; i++) { 
    var name = names[i]; 
    var colour = currentAssignments[name]; 
    if (!colour) { 
     colour = GetRandomColour(); 
     currentAssignments[name] = colour; 
    } 
    var li = $("<li>").html(name).css("color", colour); 
    $("ul").append(li); 
} 

function GetRandomColour() { 
    return '#' + Math.floor(Math.random() * 16777215).toString(16); 
} 

Here is a working example


愛特納疑心,如果你有顏色的預定義的陣列(並假設你確定你有足夠的獨特的顏色,以滿足所有的名字),你可以這樣做:

var colours = ["#F00", "#0F0", "#00F"]; 

並更換GetRandomColour()功能如下:

function GetRandomColour() { 
    return colours.pop(); 
} 

Here is an example

+0

許多thnx您的幫助 – mbultraslan

1

以下是我想做到這一點。

創建一個函數,它的名稱,並吐出了一個隨機的顏色,但它不是真正隨機的,因爲它使用的名稱創建的顏色,因此它總是返回相同的顏色,相同的名字:

function nameToColor(name) { 
    var n = 'abcdefghijklmnopqrstuvwxyz'.split(''); 
    var r = name.split('').map(function(e) {return n.indexOf(e);}).join(''); 
    var l = parseFloat('0.'+ (r*r*1000).toString().replace(/^0/, '')); 
    return '#'+Math.floor(l*16777215).toString(16); 
} 

FIDDLE

相關問題