0

我有一个 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>
    

表中的值不会改变。并且总会有 7 列和 11 行(我缩短了示例)。

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

  2. 输入编号将根据表的第一个列进行检查。输入数字“四舍五入”到列中它上面的下一个最接近的数字。

  3. 要查找的数字是第 1 步和第 4 步中的数字。

例如,如果列是 4 并且输入的数字是 31,您将转到第一列并找到下一个“向上取整”的最接近的数字 (35),然后转到第 4 列......然后数字找到是1.7

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

任何有关解决方案或在哪里寻找解决方案的帮助/指导将不胜感激。

4

1 回答 1

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
}

查看工作演示

于 2012-11-23T09:24:35.190 回答