Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery:查找表值_Jquery_Html Table_Lookup - Fatal编程技术网

jQuery:查找表值

jQuery:查找表值,jquery,html-table,lookup,Jquery,Html Table,Lookup,我正在尝试创建一个表作为查找表。通常,我会在服务器端执行此操作,但在本例中,我只有一个html表,该表将由客户端输入 基本上,在填写表单时,他们会给我两个值,分别在a列和B列中。然后表单需要使用C列中的相应值进行计算。a列重复多次,而不是多次输入,使用rowspan属性,这似乎真的使计算复杂化了,但这将是一个很大的改变(这可能是可能的,但我宁愿避免) 简化版: <table> <thead> <tr><th>Column A</t

我正在尝试创建一个表作为查找表。通常,我会在服务器端执行此操作,但在本例中,我只有一个html表,该表将由客户端输入

基本上,在填写表单时,他们会给我两个值,分别在a列和B列中。然后表单需要使用C列中的相应值进行计算。a列重复多次,而不是多次输入,使用rowspan属性,这似乎真的使计算复杂化了,但这将是一个很大的改变(这可能是可能的,但我宁愿避免)

简化版:

<table>
  <thead>
    <tr><th>Column A</th><th>Column B</th><th>Column C</th></tr>
  </thead>
  <tbody>
    <tr>
      <td rowspan="3">val1</td>
      <td>1</td>
      <td>2</td>
    </tr>
    <tr>
      <td>2</td>
      <td>2</td>
    </tr>
    <tr>
      <td>2</td>
      <td>3</td>     
    </tr>
    <tr>
      <td rowspan="2">val2</td>
      <td>4</td>
      <td>5</td>
    </tr>
    <tr>
      <td>10</td>
      <td>15</td>
    </tr>
  </tbody>
</table>

柱A柱B柱C柱
瓦尔1
1.
2.
2.
2.
2.
3.
瓦尔2
4.
5.
10
15
因此,如果他们输入: val1和1->2 val2和4->5 val2和10->15

我的一个想法是首先将表解析为嵌套数组,然后使用它。这似乎有效,但我想让其他人对处理这一问题的最佳方法发表意见。如果我可以仅仅基于DOM进行查询/过滤,它似乎会占用更少的内存,但rowspan属性似乎再次让这些解决方案变得丑陋

编辑:更正在tr标记上使用第二个rowspan属性而不是td标记 编辑:尝试通过示例部分澄清,您可能会查找任何行,我认为最好的方法(而不是使用表单数据服务器端)是在表单数据提交之前直接使用jQuery处理表单数据,而不是使用HTML结果

但是,如果您无法控制它,这将把每个“val#”行span的“C”列值的第一行带入一个对象,该对象由每个“val#”字符串设置键,您可以在其中使用它(例如,通过for in循环)。您应该在表标记中添加一个“id”属性(例如:id=“myTable”),因为这将优化jQuery选择器


$(window).ready(function() {
  var vals = {}, $table = $('#myTable');

  $table.find('td[rowspan]').each(function(i,e) {
    $(e).siblings().each(function(j,s) {
      var html = e.innerHTML, key = (html.match(/^[a-z0-9]+$/)) ? html : i.toString();

      vals[key] = parseInt($(s).html(), 10);
    });
  });

  for(var val in vals) {
    if(!vals[val]) continue;

    vals[val] = vals[val] + 20;

    alert(vals[val]); // alerts 22, then 25
  }
});

那么您只需要每个“val1”和“val2”部分下的第一行值?(例如:如果val1和1存在,val1只使用“2”?如果val2和4存在,val2只使用数字5进行计算?)第二行是否也有打字错误?(应该在td标签中,对吗?)