2013-07-26 42 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

相关问题