0

テーブルを生成する次のコードがあります。

  <table class="table table-bordered table-striped" id="assignedvs">
      <thead>
          <tr>

              <th>VlId</th>
              <th>Name</th>
              <th>Status</th>
              <th>Voice</th>
              <th>Jumbo</th>
              <th>Mode</th>
          </tr>
      </thead>
      <tbody>

          <?php foreach ($vln as $vlndetail): ?>
              <tr>          
                     <td id='vlid'><?php echo $vlndetail['VlId'] ?></td>
              <td><?php echo $vlndetail['Name'] ?></td>
              <td><?php echo $vlndetail['Status'] ?></td>
              <td><?php echo $vlndetail['Voice'] ?></td>
              <td><?php echo $vlndetail['Jumbo'] ?></td>
              <td><?php echo $vlandetail['Mode'] ?></td>
            </tr>
          <?php endforeach ?>

VlId がユーザーがテキスト ボックスで指定したものと一致する行を見つける必要があります。このレコードを見つけたら、特定の行のモード列の値を取得したいと思います。

ここに私がこれまでに書いたものがあります:

    $('#delete').live('click', function()  {

                //get a count of all records. only allowed to delete if you have more than one + the header.
                var reccount = $('#assignedvs tr').length;

                if (reccount > 2)
                {
                    //loop through the table
                $('#assignedvs tr').each(function() {

                    var temp = $(this).find(".vlid").html(); 
                    console.log(temp);  
                                    if (temp == $('#uservalue').val){
                                          //grab mode column
                                     }
                });
                }
                else
                {
                    alert("error: must have at least 1 record.");
                }



    });  

問題 - vlid 列を参照する必要があるコードが正しくありません。常にコンソールに null を出力します。私が間違ったことを教えてもらえますか?ありがとう。

編集1

ID をクラスに変更し、jquery を元のコードに戻しました。それは機能しています-ヘッダーが含まれていると思うという事実を除いて。私は4行+ヘッダーを持っています。コンソールの結果を確認すると、最初の出力は常に NULL であり、次に 4 つのレコードの正しい値です。ヘッダーを無視するにはどうすればよいですか?

4

5 に答える 5

2

それはあなたがではなく、によってfindingしているからです。で検索するには、代わりに次を使用します。classNameidid

$(this).find("#vlid").html();

ただしidsはドキュメント全体で一意である必要があるため、現在のコードを維持し、を使用する代わりにを使用することをお勧めし<td id='vlid'>ます<td class='vlid'>

また、これは関数であることに注意してくださいval()。したがって、特定の入力の値を取得するには、を使用する必要があります$('#uservalue').val()

編集:ヘッダーを除外するには、$('#assignedvs tbody tr')セレクターを使用します。このように、の子孫である行のみを取得するため、。の子孫でtbodyあるヘッダー行は無視されtheadます。

于 2012-09-26T19:50:21.227 に答える
0

いくつかの変更:

  1. <?php echo $vlndetail['VlId']; //missing semi-colon ?>
  2. var temp = $(this).find("#vlid").html();vlidはIDです
于 2012-09-26T19:50:19.013 に答える
0

これは、 http: //datatables.netのdatatablesを介して簡単に行うことができます。

于 2012-09-26T19:51:31.920 に答える
0
var temp = $(this).find("#vlid").html(); // .vlid (by class) changed to #vlid (by id)
于 2012-09-26T19:51:31.947 に答える
0

さらに簡単な解決策。

vlIdを使用して各行に ID を割り当てます(tr_重複を避けるために ID の先頭に追加することもできます)。

列名を持つクラスを各データセルに割り当てます。

そのようです:

      <?php foreach ($vln as $vlndetail): ?>
          <tr id='tr_<?php echo $vlndetail['VlId'] // set the ID ?>'>          
              <td class='vlid'><?php echo $vlndetail['VlId'] ?></td>
              <td class='Name'><?php echo $vlndetail['Name'] ?></td>
              <td class='Status'><?php echo $vlndetail['Status'] ?></td>
              <td class='Voice'><?php echo $vlndetail['Voice'] ?></td>
              <td class='Jumbo'><?php echo $vlndetail['Jumbo'] ?></td>
              <td class='Mode'><?php echo $vlandetail['Mode'] ?></td>
          </tr>
      <?php endforeach ?>

次に、選択した vlID の名前を取得するには、次の JQUERY を実行します。

var rowID = "#tr_" + $('#uservalue').val(); // this is optional. I prefer to cache values for increased code readability.
$(rowID + " td.Mode").dostuffhere(); // this selector returns the Mode cell for the row indicated by the user

これにより、その特定の行の Mode 列が取得されます。

于 2012-09-26T20:01:41.270 に答える