【问题标题】:Get Won, Tie, Lost Results on a Score Table在分数表上获得赢、平、输结果
【发布时间】:2012-11-29 22:54:44
【问题描述】:

从数据库打印的动态数据/表格。需要了解球队赢、平、输的次数。 jQuery 超级新手,不知道从什么开始编码(?!)。我想先获取 Chelsea 出现的那一行,然后比较分数,使用数组存储 W、T、L 并在最后打印结果(?)。

这是表格的样子:

<table>
<tr id="12">
   <td class="238 ekipi_1">Chelsea</td>
   <td class="231 ekipi_2">ManU</td>
   <td class="goals_238">4</td>
   <td class="goals_231">2</td>
</tr>

<tr id="13">
   <td class="242 ekipi_1">Reading</td>
   <td class="238 ekipi_2">Chelsea</td>
   <td class="goals_242">3</td>
   <td class="goals_238">3</td>
</tr>

<tr id="16">
   <td class="251 ekipi_1">Swansea</td>
   <td class="238 ekipi_2">Chelsea</td>
   <td class="goals_251">5</td>
   <td class="goals_238">3</td>
</tr>
</table>

结果将是:

          W   T   L

Chelsea | 1 | 1 | 1 |
Reading | 0 | 1 | 0 |
ManU    | 0 | 0 | 1 |

我们将不胜感激任何领先的提示。

【问题讨论】:

  • 或者也许用你拥有的数据在服务器端做所有的事情并渲染它,而不是尝试解析 dom?
  • 那张桌子看起来不像那样。它会有像Chelsea | ManU | 4 | 2Reading | Chelsea | 3 | 3这样的行

标签: jquery html-table compare


【解决方案1】:

要读取初始数据并构建对象,您可以这样做..

    var teams = {
    "Chelsea": {"W": 0, "T": 0, "L": 0},
    "ManU": {"W": 0, "T": 0, "L": 0},
    "Reading": {"W": 0, "T": 0, "L": 0},
    "Swansea": {"W": 0, "T": 0, "L": 0}
};

$('table tr').each(function() {
    var $this = $(this);
    var team1 = $this.find('td:eq(0)').text();
    var team2 = $this.find('td:eq(1)').text();
    var score1 = $this.find('td:eq(2)').text();
    var score2 = $this.find('td:eq(3)').text();

    if(+score1 === +score2){
        teams[team1]["T"] =  +teams[team1]["T"] +1; 
        teams[team2]["T"] =  +teams[team2]["T"]+1; 
    }  
    else if(+score1 > +score2){
        teams[team1]["W"] =  +teams[team1]["W"]+1; 
        teams[team2]["L"] =  +teams[team2]["L"]+1; 
    }
    else{
        teams[team1]["L"] =  +teams[team1]["L"]+1; 
        teams[team2]["W"] =  +teams[team2]["W"]+1; 
    }        
});

// Print the data

$.each(teams, function(key,value){
    var $clone = $('#template');
    $clone.find('.team').html(key);
    $clone.find('.score:eq(0)').html(value["W"]);
    $clone.find('.score:eq(1)').html(value["T"]);   
    $clone.find('.score:eq(2)').html(value["L"]);
    $('#output').append($clone.html());
});

Check Fiddle

您可以阅读 teams 对象,并在完成后将其打印出来..

【讨论】:

  • 感谢 Sushanth / 由于我是 jQuery 新手,我将如何打印表格作为我的问题中的示例(即 W|T|L)// 为成为一个完整的菜鸟而道歉.
  • 这是另一个fiddle,打印出表格。
  • 嗨@Sushanth——上面的代码工作得很好。我试图实现的最后几件事,现在我有两个不同的代码位。此链接:borozani.com/tabelat/premier-league 向您展示最终产品应该可以工作。 (下面的最后一个表格:排名(jQuery 打印))是您帮助我的代码,尽管我找不到打印/带上上表所有内容的方法。 (我在第一张桌子下方分配给自己的任务很少。)//在赛季开始时,有时并非所有球队都立即比赛,所有球队都必须在桌子上摆好。
  • 还有@Sushanth——在我用来打印Games Played + Goals Given 的jQuery 上,我使用动态数据基于DB 表中的team_id 来定位每个 // 这个在 jQuery 中生成动态变量时帮助了我很多。 (在上面的链接上查看源代码以了解我的确切意思)
  • @OctoberEleven .. 很高兴听到这个消息.. 您可以在不知道团队名称的情况下即时创建初始团队对象.. 很高兴能提供帮助 :)
猜你喜欢
相关资源
最近更新 更多
热门标签