views:

515

answers:

3

Someone made a nice code for me, but after some changes to have the output lined out in a table, the array picks font doesn't change anymore which are controlled by the following CSS.

.win { color: lime; font-weight: bold }

.loss { color: red; font-weight: bold }

Can somebody help me edit the code so the array picks are lime and red again when there is a win or not?

<html>

<head>

<title>Lotto van Terwijn</title>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW" />

<style type="text/css">


body {

        font-family: Verdana, Arial, Helvetica, sans-serif;

        color: #006699;

        background-color: #FFFFF;

      }

      .name {
        float: left;
        width: 100px;

        color: #006699;

        font-weight: bold;

        margin-right: 0.50em;

      }

      .picks, .picks * {

        display: inline;

        margin: 0;

        padding: 0;

        list-style-type: none;

      }

      .picks * {

        margin: auto 0.50em;
        color: Yellow;

      }

      .win { color: lime; font-weight: bold }

      .loss { color: red; font-weight: bold }

      .drawNum, #Draws H3 {

          margin-bottom: 0;

      }


ul 
{
        list-style-type: none;
        padding-left: 0px;

}

th
{
text-align:left;
padding-right:30px;
padding-top:5px;
padding-bottom:5px;
} 

tr
{
text-align:left;
padding-right:30px;
padding-top:12px;

} 

</style>

<body>

<p><img src="../lotto/images/terwijn.png" width="547" height="188"></p>


<script type="text/javascript" src="../lotto/lotto.js"></script>

<div id="players"></div>
<div id="draws"></div>

<script type="text/javascript">

(function() {

 var players = {
    Joop   : ["6","8","16","18","26","28","32","36","38","41"],
    Marijke: ["7","10","14","18","24","29","30","34","39","40"],
    Michel : ["4","5","11","16","21","27","33","36","42","44"],
    Mario  : ["6","9","18","25","32","35","39","40","43","45"],
    Diana  : ["2","6","8","17","22","23","33","36","42","45"],
    Agnes  : ["3","5","10","15","26","29","32","37","41","44"],
    Chris  : ["5","7","8","9","11","12","16","28","30","32"],
    Jeannette: ["1","2","4","7","8","11","13","28","30","38"],
    Wieger: ["1","2","3","7","10","13","14","22","23","27"],
    Anita: ["6","13","15","17","21","26","32","33","43","45"],
    Thea: ["1","3","5","7","10","17","19","20","22","38"],
    Danny: ["3","7","11","15","22","28","32","37","40","43"],
    Cindy: ["2","4","16","18","21","24","33","38","41","44"],
    Hanneke: ["1","3","4","12","18","21","25","30","36","40"],
    Willem: ["3","9","17","21","27","33","35","39","41","42"]
},

draws = [
    {
    when: 'Datum: Zaterdag 08-08-2009',
          picks:[2, 13, 15, 18, 21, 41]
    },

    {
    when: 'Datum: Zaterdag 15-08-2009',
      picks:[6, 19, 24, 25, 35, 37]
    },

    {
    when: 'Datum: Zaterdag 22-08-2009',
      picks:[8, 17, 23, 26, 37, 42]
    }
];

var buildPlayers = function(){
    var cont = $("#players"), table = $('<table></table>');
    for( player in players ){
    if ( players.hasOwnProperty( player ) ) {
        var tr = $('<tr><th>' + player + '</th></tr>').appendTo(table),
            len = players[player].length;

        for ( var i = 0; i < len; i++) {
            var td = $('<td/>').text( players[player][i] )
         .appendTo ( tr );
        }

        cont.append( table );
    }
    }
};

var buildDraws = function(){
    var cont = $("#draws");
    for(var i = 0; i < draws.length; i++){
    var html = ["<div class='draw'>","<h4 class='drawNum'>Trekking "+(i+1)+"</h3>","<div class='date'>"+draws[i].when+"</div>","<ol class='picks'>"];

    for(var j = 0; j < draws[i].picks.length; j++) {
        var img = '<img src="http://www.lotto.nl/static/images/ballen/lotto/l'
        + draws[i].picks[j]
        + '.jpg" alt="'
        + draws[i].picks[j]
        + '" />';
        html.push("<li>"+img+"</li>");
        showWin(draws[i].picks[j]);
    }



    html.push("</ol>","</div>");
    cont.append(html.join(""));
    }
};

var showWin = function(winNum){
    $(".pick_"+winNum).removeClass("loss").addClass("win");
};

$(function(){
    buildPlayers();
    buildDraws();
    });

})();
</script>



</body>

</html>
+4  A: 

When you changed to your table layout you managed to lose the class that's being selected to add the "win" or "loss" classes as needed. The pertinent code is:

var showWin = function(winNum){
    $(".pick_"+winNum).removeClass("loss").addClass("win");
};

It can't find an element with the class "pick_[some number]" then it can't add the win or loss classes and you don't get your colors.

To solve your problem, inside your BuildPlayers function, you need something like the following:

var td = $('<td/>').text(players[player][i]);
td.addClass("pick_" + players[player][i]);
td.appendTo(tr);

That could be combined into one line, but I thought it might be easier to see like this. The middle line ("addClass") is what you're missing.

Gabriel Hurley
I'm a little confused by al these answers, what do I need to replace or add?
Chris
thank you for your reply, the only thing is that .loss doesn't show, my knowledge is not covering this problem.
Chris
Chris, simply add the `loss` class to the td aswell. Just before appending the td to the tr, add `td.addClass("loss");`
Joel Potter
Great help all!! thank you very much :)
Chris
+2  A: 

Gabriel is correct. Where you are creating the td in the buildPlayers function you need to add the pick_# class.

Put this inside the for loop:

var td = $('<td/>') 
    .addClass("pick_" + players[player][i]) // add the class to the td
    .text( players[player][i] )
    .appendTo ( tr );

Should fix the problem.

Joel Potter
+1 Yep, there it is... I didn't want to read through all the code to find that line earlier... lol.
Gabriel Hurley
+1  A: 

Change

for ( var i = 0; i < len; i++) {
        var td = $('<td/>').text( players[player][i] )
        .appendTo ( tr );
    }

To:

for ( var i = 0; i < len; i++) {
        $(tr).append( "<td><span class='pick_" + players[player][i] +"'>" + players[player][i] + "</span></td>");
    }

You forgot to add the right class to the numbers.

MrHus