javascript
  • php
  • jquery
  • ajax
  • 2017-05-30 10 views 1 likes 
    1

    は、製品のリストを使用して印刷されているjQueryのテーブルのループ- ここ

    while($rr = $retval->fetch_object()) { 
        $summery_return .= '<div class="w3-blue w3-card-4" style="font-size:18px;">'; 
        $summery_return .= '<span style="color:white;padding:2px;font-weight:bold" id="itmslct" data-proname='.$rr->product.'>'.$rr->product.'<span style="float:right;margin-right:19px;">'.$rr->qty.'</span>'; 
        $summery_return .='</span><hr style="margin:3px"></div>'; 
    } 
    

    スクリプト

    $summery_return .='<script> 
        $(document).ready(function(){ 
    
          $("#itmslct").click(function() { 
           var loc_proname = $(this).attr("data-proname"); 
           alert(loc_proname); 
          $("."+loc_proname).css("background-color", "#f00"); 
    
          }); 
    
          }); 
        </script>'; 
    return $summery_return; 
    

    製品

    while($row = $result2->fetch_object()){   
        $icost=$row->quantity*$row->price; 
        $progress_return .='<tr class='.$row->product.'> 
          <td><b>'.$row->product.'</b></td> 
         <td><b>'.$row->type.'</b></td> 
         <td><b>'.$row->quantity.'</b></td> 
         <td><b>'.$row->pack.'</b></td> 
         <td><b>'.$row->topping.'</b></td> 
         <td><b>'.$row->extra.'</b></td> 
         <td><b>'.$row->comments.'</b></td> 
         <td><button style="background-color:red;color:white">Done</button></td> 
         </tr>';  
        $total=$total+$row->quantity*$row->price;     
    } 
    

    ながら、ときに私最初のwhileループで印刷された製品をクリックし、2番目のループで製品の背景色を変更します。 複数の製品は、同じ名前のテーブル内にあります、私は推測するループ

    が、私はそれをやってみましたが、私はどんな結果に

    +4

    私はピザという名前のすべての製品、その後のピザを選択し、背景色を変更 – JYoThI

    +0

    のために一意である必要がありますitmslct'、現在は動作するはずですが、最初の要素(重複IDの場合は、見つかった最初の要素のみで動作します)でのみ動作します。ちなみに、商品名クラスの接頭辞も使用する必要があります。それは、何か他の人が使用する可能性のある一般的な単語の場合です。 – ajay

    +0

    があるように必要がある場合は、idはJYoThIが指摘したように、あなたは 'のための代わりにIDのクラスを使用する必要があります例えば、各要素の使用クラス属性 – Kaddath

    答えて

    1

    が表示されていない間、私は最初で製品を選択すると、すべてそこに背景色を変更する必要がHTMLが有効でないため、コードが機能していません。 DOMでは; idは一意である必要があります。したがって、IDの重複を避けるためです。 PHPと対応するJSコードを変更してください。代わりにid="itmslct"の次のように我々はそれclassようになります:

    while($rr = $retval->fetch_object()) { 
        $summery_return .= '<div class="w3-blue w3-card-4" style="font-size:18px;">'; 
        $summery_return .= '<span style="color:white;padding:2px;font-weight:bold" class="itmslct" data-proname='.$rr->product.'>'.$rr->product.'<span style="float:right;margin-right:19px;">'.$rr->qty.'</span>'; 
        $summery_return .='</span><hr style="margin:3px"></div>'; 
    } 
    

    および関連JSは、次のようになります。

    $(document).ready(function(){ 
    
        $(".itmslct").click(function() { 
         var loc_proname = $(this).attr("data-proname"); 
         alert(loc_proname); 
         $("."+loc_proname).css("background-color", "#f00"); 
        }); 
    
    }); 
    
    +0

    loc_pronameを警告しようとしているときに、製品の半分の名前しか表示されず、残りの部分がアラートに表示されている場合は、 – ajay

    +0

    その値を属性値として使用しないでください。その代わりに、空白やその他の特別な文字を含まない製品IDまたは製品番号を使用してください。そのテキストにスペースがあれば 'tr'の' class'として設定することに問題があります。 – vijayP

    +0

    私たちはクラスの番号を教えてもらえますか? – ajay

    0

    idの一意である必要があります。代わりにクラスを使用する必要があります。

    また、trの背景色を設定しているようです。

    代わりにtdセルのスタイリングを試してください。

    いずれセレクタ

    $("."+loc_proname + ' td') 
    

    またはtd要素にクラスを追加してそれらを標的とします。

    スタイリング固有の要素セレクタがスタイルに合わせてうまく調整されないため、2番目のオプションをお勧めします。

    +0

    のようにすることができます。クラスにtdを追加すると、製品の部分のみが変更されますが、変更するには完全な行が必要です – ajay

    +0

    ' td要素を含む。私は知っている、それはあまりにも面倒ですが、常にあなたのCSSセレクターでクラスと要素とIDではなく、習慣を取得しようとします。 – vassiliskrikonis

    関連する問題