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 に答える