Thanks for the solutions, I have figured out solutions like yours, but I
tought that may exists less-code solutions, so I opened this thread.
Thanks anyway, great solutions.
On Tue, Oct 20, 2009 at 00:18, Charlie wrote:
> I try to learn as much as I can from this sort of exercise.
>
> I made a couple of revisions to previously untested version, went back and
> made a couple of syntax and code fixes to previously untested suggestion
>
> I only submit this because it works on a limited sized table with simple
> names, not suggesting that it is highly efficient or not, and always open to
> learning why something isn;t efficient. Have been told in past not to use
> attr() but still not sure why.
>
> tested this in FF and IE
> live version : http://jsbin.com/ayaji
>
> js:
> $(document).ready(function() {
>var colorArray=["red","blue","green","orange","black"];
> var colorCount=0;
> $("# table tr").each(function() {
> var classname= $(this).find("td").eq(1).text();
> if ($("."+classname).length >0) {
> var thisStyle=$("."+classname).eq(0).attr("style")
> $(this).attr("style", thisStyle)
> }else{
> if(colorCount>4){
> colorCount=0
> }
> $(this).addClass(classname).css("color",colorArray[colorCount]
> )
> colorCount++
> }
> });
> });
>
>
>
> Bi Jing wrote:
>
> I like this issue and following is my draft implement, its working on
> IE/FF, hope it helps
>
> Firstly, I suggest adding a class to COSTUMER column that gonna making
> things easier.
>
> HTML sample code:
>
>
> 1
> dd
> cc
> ss
> ss
>
>
> 2
> 22
> 33
> dsaf
> fdas
>
>
> 1
> dd
> cc
> ss
> ss
>
>
> and following is JS code :
>
> var color={};
> var offset=0;
>
> // Following fragment change cells color.
> $("tr .COSTUMER").each(function(i){
> var value=$.trim($(this).text());
> if(isDuplicated(value)){
> this.style.backgroundColor=generateColor(value);
> }
> });
>
> // This function is used to check whether content of one rows appears more
> than one time.
> function isDuplicated(value){
> return $("tr .COSTUMER").filter(function (){
> return $.trim($(this).html())==value;
> }).length>1;
> }
>
> //Generate color with provided text value.
> function generateColor(text){
> if(!color[text]){
> color[text] = ['#ccc','#999','#88','#336699'][offset++];// For
> testing, only 4 elements in color array, you can increase it.
> }
> return color[text];
> }
>
> If you have more than 100 rows, this fragment maybe slow, but actually
> there should have a pagination, isnt it?
>
> Best
> Becoder.
>
> On Tue, Oct 20, 2009 at 5:33 AM, Charlie wrote:
>
>> my starting thought would be use the name as a class, assign a color to
>> class perhaps from an array of colors so you could have 10 colors and use
>> them in order for first ten unique names, then repeat for next 10 unique
>> names
>>
>> use a length ( or size) test to see if that class already exists, if it
>> does, get the css from the first element with that class [grab the
>> attr("style") ], don't use a new color and go to next name
>>
>> this is really rough and untested:
>>
>> var colorArray=["red","blue"etc ///setup color array, assuming 10
>> colors for code below]
>> var colorCount;
>> $("#yourTable tr").each(function() {
>>
>> var classname= $(this).find("td").eq(1).text();
>> if ($("."+classname).length >0) {
>> var thisStyle=$("."+classname +).eq(0).attr("style")
>> $(this).attr("style", thisStyle)
>> }else{
>> colorCount++
>> if(colorCount>9){
>> colorCount=0
>> }
>> $(this).addClass("classname").css("color", colorArray[colorCount])
>> }
>> });
>>
>>
>>
>>
>>
>>
>> Gewton Jhames wrote:
>>
>> Anybody want to discuss a way to change row colors of table based on
>> content, for example:
>> +-|---+
>> |acess|COSTUMER |
>> |-|
>> | 1 | joseph |
>> | 2 | mary|
>> | 3 | john|
>> | 4 | joseph |
>> | 5 | joseph |
>> | 6 | guile |
>> | 7 | mary|
>> | 8 | craig |
>> +-+
>>
>> in this table, the name Joseph and Mary are repeated, so, every "joseph"
>> or "mary" row must have the same color (picked randomly or not). so as every
>> "craig", "guile" or "john" row.
>> I don't want to use css class names based on the name of the "costumers"
>> because I don't know how many costumers are and how many times they appear
>> or repeat.
>>
>> thanks
>>
>>
>>
>
>