2009-08-30 3 views
45

Я сделал неправильный расчет в структуре таблицы. Код ниже для игры в лото (известный код, который я думаю;))Добавить строку поверх таблицы, сгенерированную Javascript

Есть ли способ добавить строку поверх таблицы, заполненной цифрами? Я действительно не знаю, как это сделать.

http://www.coldcharlie.nl/lotto/

<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] 
    }, 

{ 
    when: 'Datum: Zaterdag 29-08-2009', 
     picks:[1, 11, 31, 39, 42, 43] 
    } 
]; 



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/>') 
    td.addClass("loss") 
    .addClass("pick_" + players[player][i]) // add the class to the td 
    .text(players[player][i]) 
    .appendTo (tr); 

    } 


    var winning = $('<td>').addClass('winning-col').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></p>","<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(); 
    function countWinning() { 
    $('#players table tr').each(function() { 
     var winning = $('td.win', this), total = 0; 
     winning.each(function(i,num) { 
     total+= parseInt($(this).text(), 10); 
     }); 

     $(".winning-col", this) 
    .text($("td.win", this).length) 
    .addClass("hilighted"); 

    }); 
    } 
    countWinning(); 
}); 


})(); 

</script> 
+0

Это ответ в другом потоке (http://stackoverflow.com/a/17860906/2443988) –

ответ

122

Вы также можете сделать это с помощью insertBefore:

$('<tr><td>Stuff</td></tr>').insertBefore('table > tbody > tr:first'); 

или before:

$('table > tbody > tr:first').before('<tr><td>Stuff</td></tr>'); 

или prependTo:

$("<tr><td>prependTo</td></tr>").prependTo("table > tbody"); 
+1

+1 для опций diff –

+14

Я считаю, что prependTo - лучший вариант, потому что он работает, даже когда тень пуст. Остальные полагаются на наличие существующего первого tr. – ThatAintWorking

+1

Кто-нибудь знает, что называется этой нотацией? 'table> tbody' и т. д.? EDIT: ответил на мой собственный вопрос [«Выбор ребенка»] (http: //api.jquery.com/child-selector /) –

10

insertRow() Используйте метод на вашем <tbody>

var myTable = document.getElementById('myTable'), 
    tbody = myTable.tbodies[0], 
    tr = tbody.insertRow(-1) // puts it at the start 
; 

var td = document.createElement('td'); 
    td.innerHTML = "Something"; 
tr.appendChild(td); 
+0

Как это могло вписывайтесь в мой стол, у меня нет подсказки. – Chris

+0

Ответ jQuery был бы хорош для вопроса jQuery. –

+5

@ Chris Charabaruk - на самом деле, этот вопрос был отмечен jQuery и Javascript. Эти два не являются взаимоисключающими, кроме того, OP не запрашивает конкретно решение jQuery, так что это хороший ответ. Удалено нисходящее. – karim79

28

JQuery:

$("#myTable tbody").prepend("<tr><td>...contents...</td></tr>"); 
+0

Можете ли вы сказать мне, где я могу поместить эту часть? – Chris

+2

Где бы вы ни захотели «добавить строку поверх таблицы, заполненную цифрами». – Zed

+0

Когда я добавляю этот код в таблицу чисел, добавляется много столбцов на вершине eachother, а не строка поверх таблицы. – Chris

1

Добавление строки в верхней части таблицы с выцветанию фоном:

$('button').click(function() { 
    $('<tr class="anim highlight"><td>new text</td></tr>') 
    .hide() 
    .prependTo('table tbody') 
    .fadeIn("slow") 
    .addClass('normal'); 
}); 

Добавление фоновой анимации перехода :

.anim { 
    transition: background 5s linear; 
} 
.highlight{ 
    background: #FF3333; 
} 
.normal { 
    background: transparent; 
} 

См http://jsfiddle.net/qdPAe/699/

0

Другой способ: [! Ссылка]

var newHtml = '<div/>'; 

$('#tBody').html(newHtml + $('#tBody').html()); 
Смежные вопросы