1

カスタマイズの余地がほとんどないテーブルにショッピングカートの概要を生成するシステムを使用しています。私がやりたいのは、ショッピングカートが「空」のときに「0」を表示することです。

数量が含まれている場合は、その番号を表示します。

これは私が隠した生成されたHTMLです:

<span vertical="False" quote="False" id="catCartSummary">
   <table cellspacing="0" class="cartSummaryTable">
     <tbody>
       <tr>
         <td class="cartSummaryItem">3 item(s), Total: $115.00 <a href="/OrderRetrievev2.aspx?CatalogueID=0" class="cartSummaryLink">View Cart</a></td>
       </tr>
     </tbody>
   </table>
</span>

ご覧のとおり、現在「3つのアイテム」があります。

これは空のように見えるものです:

<span vertical="False" quote="False" id="catCartSummary">
   <table cellspacing="0" class="cartSummaryTable">
     <tbody>
       <tr>
         <td class="cartSummaryItem">Shopping cart is empty.</td>
       </tr>
     </tbody>
   </table>
</span>

ここに簡単なHTML設定があります。

<div class="cartsummary">
  <div class="cartitems">Shopping Cart <a href="#"><span class="cartTotal"></span> Item(s)</a></div>
</div>

jQueryを使用して、数量を取得し、それを.cartTotalに追加します。カートに何もない場合は、0を表示します。

この種の機能は機能しますが、カートに新しいアイテムを追加すると、ページが更新されたときにのみ値が更新されますが、自動生成されたものは動的に更新されます。

if (jQuery('#catCartSummary .cartSummaryItem').html() != 'Shopping cart is empty.') {
   var summary = jQuery('#catCartSummary .cartSummaryItem').text().split(" ");
   var total = summary[0];
   jQuery('span.cartTotal').html(total);
}else{
   jQuery('span.cartTotal').html("0");
}

注目に値する余分なものはほとんどありません:

  1. 0'アイテム'、1 "アイテム"、2"アイテム"を持つことができれば素晴らしいでしょう。常に「アイテム」ではなく
  2. また、別のスパンで合計コストを個別に表示することもできます。おそらく.cartAmount。
4

1 に答える 1

1

試す:

var text = $('#catCartSummary .cartSummaryItem').text();
items = text.match(/(\d+) item/);
var num = 0;
if(items &&items.length > 0){
   num = items[1];
}
$(".cartItems").html('<div class="cartitems">Shopping Cart <a href="#"><span class="cartTotal">'+num+'</span> Item'+(num == 1 ? '' : 's') +'</a></div>');

いくつかのポインタ:

  • text.text()を使用して、変数にhtmlを取得しないようにします
  • 分割する代わりに、正規表現を使用してアイテムの数を解析します
于 2012-05-18T01:58:45.153 に答える