首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从表行获取值

从表行获取值
EN

Stack Overflow用户
提问于 2016-01-07 22:50:50
回答 5查看 2.7K关注 0票数 1

从下表中可以获得每项运动的总价值,例如,使用Javascript/jquery/jquery-plugins

足球:2板球:1网球:2

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<body>

<table style="width:100%">
<thead>
<tr>
    <td>first name</td>
    <td>last name</td>      
    <td>sport</td>
  </tr>
</thead>
  <tr>
    <td>Bob</td>
    <td>Smith</td>      
    <td>football</td>
  </tr>
  <tr>
    <td>Dan</td>
    <td>Jackson</td>        
    <td>cricket</td>
  </tr>
  <tr>
    <td>Will</td>
    <td>Rie</td>        
    <td>Tennis</td>
  </tr>
<tr>
    <td>Tom</td>
    <td>Lawrence</td>       
    <td>Tennis</td>
  </tr>
<tr>
    <td>John</td>
    <td>croft</td>      
    <td>football</td>
  </tr>

</table>

</body>
</html>

我尝试过使用jQuery.size().count(),但没有成功。任何建议都会有帮助的!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-01-07 23:35:11

我的建议是:

代码语言:javascript
复制
$(function() {
  var result = {};
  $('table tr:not(:first)').find('td:last').each(function(index, element) {
    var txt = element.innerHTML;
    if (!result.hasOwnProperty(txt)) {
      result[txt] = 1;
    } else {
      result[txt]++;
    }
  });
  var resultStr = JSON.stringify(result).replace(/[{}"]/g, '').replace(/,/g, ' ');
  alert(resultStr);
});
代码语言:javascript
复制
<script src="http://code.jquery.com/jquery-1.11.3.js"></script>

<table style="width:100%">
    <thead>
    <tr>
        <td>first name</td>
        <td>last name</td>
        <td>sport</td>
    </tr>
    </thead>
    <tr>
        <td>Bob</td>
        <td>Smith</td>
        <td>football</td>
    </tr>
    <tr>
        <td>Dan</td>
        <td>Jackson</td>
        <td>cricket</td>
    </tr>
    <tr>
        <td>Will</td>
        <td>Rie</td>
        <td>Tennis</td>
    </tr>
    <tr>
        <td>Tom</td>
        <td>Lawrence</td>
        <td>Tennis</td>
    </tr>
    <tr>
        <td>John</td>
        <td>croft</td>
        <td>football</td>
    </tr>

</table>

票数 0
EN

Stack Overflow用户

发布于 2016-01-07 22:57:37

创建一个对象,解析表以获取所有最后的td,获取它们的值并将其设置为对象的键,并在它们再次出现时增加它的值。

代码语言:javascript
复制
var sports = {};
$(function() {
  $("table tr:not(:first)").each(function(i) {
    var sport = $(this).find("td").last().text();
    if (sports.hasOwnProperty(sport))
      sports[sport] += 1;
    else
      sports[sport] = 1;
  });

  console.log(sports);
  console.log("Football count is: " + sports.football);

});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="width:100%">
  <thead>
    <tr>
      <td>first name</td>
      <td>last name</td>
      <td>sport</td>
    </tr>
  </thead>
  <tr>
    <td>Bob</td>
    <td>Smith</td>
    <td>football</td>
  </tr>
  <tr>
    <td>Dan</td>
    <td>Jackson</td>
    <td>cricket</td>
  </tr>
  <tr>
    <td>Will</td>
    <td>Rie</td>
    <td>Tennis</td>
  </tr>
  <tr>
    <td>Tom</td>
    <td>Lawrence</td>
    <td>Tennis</td>
  </tr>
  <tr>
    <td>John</td>
    <td>croft</td>
    <td>football</td>
  </tr>

</table>

票数 2
EN

Stack Overflow用户

发布于 2016-01-07 22:59:25

这将遍历行(忽略第一个行),查看每个行的最后一个td,并将计数添加到counts对象中。如果这项运动以前没有被看到过,它包括一个计数的1,否则,它只是增加已经存在的一个。

编辑:添加jsfiddle:https://jsfiddle.net/1prura93/

代码语言:javascript
复制
$(document).ready(function() {
  var rows = $('tr');
  var counts = {};
  var sport = null;

  for (var i = 1; i < rows.length; i++) {
    sport = $('td', rows[i]).last().text();
    if (!counts[sport]) {
      counts[sport] = 1;
    } else {
      counts[sport]++;
    }
  }

  console.log(counts);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34666656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档