根据输入和查找表查找值

时间:2012-11-23 09:01:35

标签: jquery html-table lookup-tables

我有一个jQuery问题,我可以使用一些帮助。我正在尝试根据表中的值确定值。

以下是该方案:

  1. 选择了一个类别。这决定了要使用的列。这里的 代码:

    var column;
    
    if( $('input:radio[name=arc2-1]:checked').val() == 0 && $('input:radio[name=arc2-2]:checked').val() == 0) {
    column = 2;
    }else if( $('input:radio[name=arc2-1]:checked').val() == 0 && $('input:radio[name=arc2-2]:checked').val() == 1) {
    column = 3;
    }else if( $('input:radio[name=arc2-1]:checked').val() == 1 && $('input:radio[name=arc2-2]:checked').val() == 0) {
    column = 4;
    }else if( $('input:radio[name=arc2-1]:checked').val() == 1 && $('input:radio[name=arc2-2]:checked').val() == 1) {
    column = 5;
    }else if( $('input:radio[name=arc2-1]:checked').val() == 2 && $('input:radio[name=arc2-2]:checked').val() == 1) {
    column = 6;
    }else if( $('input:radio[name=arc2-1]:checked').val() == 3 && $('input:radio[name=arc2-2]:checked').val() == 1) {
    column = 7;
    }
    
  2. HTML中有一个隐藏的表格,如下所示:

    <table id="ms25">
        <tr>
            <td>65</td>
            <td>5.4</td>
            <td>5.4</td>
            <td>3.1</td>
            <td>3.1</td>
            <td>3.0</td>
            <td>-</td>
        </tr>
        <tr>
            <td>55</td>
            <td>4.6</td>
            <td>4.6</td>
            <td>2.7</td>
            <td>2.7</td>
            <td>2.5</td>
            <td>-</td>
        </tr>
        <tr>
            <td>45</td>
            <td>3.8</td>
            <td>3.8</td>
            <td>2.2</td>
            <td>2.2</td>
            <td>2.0</td>
            <td>-</td>
        </tr>
        <tr>
            <td>35</td>
            <td>2.9</td>
            <td>2.9</td>
            <td>1.7</td>
            <td>1.7</td>
            <td>1.5</td>
            <td>8.1</td>
        </tr>
    </table>
    
  3. 表格中的值不会改变。并且总会有7列和11行(我缩短了示例)。

    1. 这是棘手的部分。输入中输入一个数字(65或更少) 领域。然后:

    2. 根据第一个表格列检查输入的数字。输入数字“向上舍入”到列中它上面的下一个最接近的数字。

    3. 要查找的号码是步骤1和步骤4中的号码。
    4. 例如,如果列为4且输入的数字为31,您将转到第一列,找到下一个最接近的数字“向上舍入”(35),然后你去到第4列......并且要查找的数字是 1.7

      我发现了与解决方案相关的零碎(例如:jQuery find same td in prev. and next row),但我不确定如何将它们放在一起。

      对于解决方案或寻找解决方案的任何帮助/指导都将非常感激。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

function get_table_value(column, value) {
   table = $('#ms25');
   smallestdiff = Number.MAX_VALUE;
   savedindex = 0;
   table.find('td:first-child').each(function(i) {
      diff = parseInt($(this).text(),10) - parseInt(value, 10);
      if (diff > 0 && diff < smallestdiff) {
          smallestdiff = diff;
          savedindex = i;
      }
   });
   tr = table.find('tr:eq('+savedindex+')');
   alert ( tr.find('td:first-child').text() );  //alerts 35
   alert ( tr.find('td:nth-child('+column+')').text() ); //alerts 1.7
}

见工作demo