jsはシンプルなショッピングカートモジュールを実装します

jsはシンプルなショッピングカートモジュールを実装します

この記事の例では、参考までに、シンプルなショッピングカートモジュールを実装するためのjsの具体的なコードを共有しています。具体的な内容は次のとおりです。

主な特徴

  • 入力ボックスの通常の判定、2桁の小数点、0から始まることができます
  • 商品名が同じ場合は数量が自動的に1増加します。商品名が同じでも価格が異なる場合は最新の価格が優先されます(バグがあり、複数の商品を操作できません。プログラムがわかりにくいので後で修正します)
  • 商品を選択したり、数量を追加または減らしたりすると、右下の価格と数量が自動的に更新されます。
  • 決済された商品は自動的に消えます

ソースコード:

1.html

<本文>
      <div id="head" align="center">
        <フォーム>
          <span class="font1">名前:</span><input type="text" id="name">
          <span class="font1">単価:</span><input type="text" id="price">
          <input id="add1" type="button" value="追加">
          <input id="pay1" type="button" value="チェックアウト">
          <input id="set1" type="reset" value="リセット">
        </フォーム>
      </div>
      <div>
        <表の境界線="1" id="t">
          <頭>
          <tr align="center">
            <td><input type="checkbox" style='カーソル: ポインタ'></td>
            <td>製品名</td>
            <td>価格</td>
            <td>数量</td>
            <td>操作</td>
          </tr>
          </thead>
          <t本文>

          </tbody>
        </テーブル>
      </div>
      <div align="right" id="b">
        <span>合計金額:</span>
        <span id="合計" style="color: red">0</span>&nbsp;
        <span>商品の数量:</span>
        <span id="TotalNum" style="color: red">0</span>
      </div>
</本文>

2.css

 <スタイル>
        体{
          背景色: コーラル;
        }
        #頭{
          マージン:30px 自動 10px 自動;
        }
        #名前、#価格{
          背景色: アクアマリン;
        }
        #追加1、#支払い1、#設定1{
          色: 赤;
          フォントの太さ: 太字;
          背景色: ゴールド;
          カーソル: ポインタ;
        }
        .font1{
          フォントの太さ: 太字;
          フォントサイズ: 大きい;
        }

        #t、#b{
          境界線の折りたたみ: 折りたたみ;
          マージン: 30px 自動;
          幅: 600ピクセル;
        }
        #t スレッド{
          境界線: 3px 金色;
          色: 白;
          背景色: 青;
        }
        #t tボディ{
          色: #1414bf;
          背景色: 白;
        }
</スタイル>

js部分

<script src="../lib/jquery-3.3.1.js"></script>
  <スクリプト>
    //ボタン関数を初期化する initButton(){
      $("input[name=j1]").off();
      $("入力[名前=x1]").off();
      //数量ボタンを追加 $("input[name=j1]").on("click", function (){
             var num = parseInt($(this).prev().val());
        (数値>1)の場合{
          $(this).prev().prev().attr("無効",false);
        }
        (数値>9)の場合{
          $(this).attr("無効","無効");
          戻る;
        }
             数値++;
             (数値>1)の場合{
               $(this).prev().prev().attr("無効",false);
             }
             (数値>9)の場合{
               $(this).attr("無効","無効");
             }
             $(this).prev().val(num);
        $("#合計").text(cal());
        $("#TotalNum").text(calNum());
           }
      )
      //数量を減らすボタン$($("input[name=x1]")).click(function (){
        var num = parseInt($(this).next().val());
        (数値1 < 10)の場合{
          $("#add1").prop("無効",false);
        }
        数値--;
        (数値<10)の場合{
          $(this).next().next().prop("無効",false);
        }
        (数値 == 1)の場合{
          $(this).prop("無効","無効");
        }
        $(this).next().val(num);
        $("#合計").text(cal());
        $("#TotalNum").text(calNum());
      });
    }
// 削除関数を初期化する initdelete(){
      $(".delete").on("click",function(){
        $(this).parent().parent().remove();
        $("#合計").text(cal());
        $("#TotalNum").text(calNum());
      });
    }
//すべて選択または選択解除する function$("thead input[type=checkbox]").on("click",function (){
     $("tbody input[type=checkbox]").each(function (index,element){
       $(this).prop("checked",$("ヘッド入力[type=checkbox]").prop("checked"));
       $("#合計").text(cal());
       $("#TotalNum").text(calNum());
     });
   })

    // 各チェックボックスを初期化する function initCheckBox(){
      $("tbody入力[type=チェックボックス]").off();
      $("tbody input[type=checkbox]").on("change",function (){
        $("#合計").text(cal());
        $("#TotalNum").text(calNum());
      });
    }
    //合計金額を計算する function cal(){
      var 価格 = null;
      $("tbody input[type=checkbox]:checked").each(function (){
        var priceByOne = parseFloat($(this).parent().next().next().text());
        var num = parseFloat($(this).parent().next().next().find("input[name='num']").val());
        var totalMoneyByone = priceByOne * num;
        価格+= totalMoneyByone;
      });
      返品価格;
    }
    //合計数を計算する function calNum(){
      var 合計数 = null;
      $("tbody input[type=checkbox]:checked").each(function (){
        var num = parseInt($(this).parent().next().next().find("input[name='num']").val());
        合計数+=数値;
      });
      totalNum を返します。
    }


    //決済$("#pay1").on("click",function (){

      alert("総消費量: "+cal());
      $("ヘッド入力[type=チェックボックス]:checked").prop("checked",false);
      $("tbody input[type=checkbox]:checked").parent().parent().remove();


    });

    //$("#add1").on("click",function (){ を追加
      var name = $("#name").val();
      var 価格 = $("#price").val();
      var priceZ = /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/
      if ((name == "" || price == "") || (!priceZ.test(price)) ){
        alert("入力エラー!");
      }それ以外 {
        var GameArr = [];
        var フラグ = false;
        var repeat = null;
        //名前配列を取得する $("tbody").each(function (){
            var finds = $(this).find(".goodsName");
            (i = 0 とします; i < finds.length; i++) {
              GameArr.push(finds.eq(i).text());
          }
        });
        (i = 0 とします; i < GameArr.length; i++) {
          (名前 == GameArr[i])の場合{
            繰り返し = i;
            フラグ = true;
            壊す;
          }}
        //同じ名前がある場合は数量と価格を変更します if (flag == true){
          var totalNum = parseInt($("tbody:eq(" + repeat + ")").find("input[name='num']").val())+1;
          合計数 > 9 の場合{
            $(this).attr("無効","無効");
          }
          $("tbody:eq(" + repeat + ")").find("input[name='num']").val(totalNum);
          $("tbody:eq(" + repeat + ")").find(".goodsPrice").text(価​​格);
          //それ以外の場合はテーブルを連結します}else {
        var goods = "<tr>"+
             "<td><input type='checkbox' style='cursor: ポインター'></td>"+
             "<td class='goodsName'>"+名前+"</td>"+
             "<td class='goodsPrice'>"+価格+"</td>"+
             "<td>"+
             "<input type='button' value='-' name='x1' style='cursor: pointer'>&nbsp;"+
             "<入力タイプ='テキスト' 値='1' 名前='数値'>&nbsp;"+
             "<入力タイプ='ボタン' 値='+' 名前='j1' スタイル='カーソル: ポインター'>"
             +"</td>"+
             '<td><a href="" class=" rel="external nofollow" delete" style="color:red">削除</a></td>' +
             「</tr>」
        $("tbody").append(商品);
        // 毎回追加した後、イベント initButton() をバインドします。
        初期化削除();
        チェックボックスを初期化します。
      }}
    });
</スクリプト>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Jsモジュール化の動作原理とソリューションの詳細な説明
  • node.jsのコアモジュールとは
  • Node.js http モジュールの使用
  • Node.js の exports と module.exports の違いの詳細な説明
  • Sea.js の Module.exports と exports の違いの詳細な説明
  • node.js の module.exports と exports の違い
  • Node.js の exports と module.exports の違いの詳細な紹介
  • 高度な JavaScript モジュール化のための require.js の具体的な使用法
  • RequireJsの公式チュートリアルの詳しい説明
  • Jsモジュールパッケージのエクスポートの使用法と違いにはインポートが必要

<<:  Centos7.3 Nginx をインストールして展開し、https を設定する方法

>>:  MYSQLクエリデータの結果に自動的に番号を付ける方法

推薦する

webpack イメージを base64 に変換する例

url-loader をダウンロード 糸を追加 -D URLローダー モジュール: { ルール: {...

JavaScript 手ぶれ補正のケーススタディ

原理手ぶれ補正の原理は、イベントをトリガーすることはできますが、イベントがトリガーされてから n 秒...

初心者向けウェブサイト構築ガイド⑦:美しいウェブサイトを作るのはとっても簡単

私はかつて、ウェブサイトを一度も構築したことのない人々が、初心者向けのウェブサイト構築方法に関する私...

開発者とオペレーターが注目すべき Linux デバッグ ツール [推奨]

システム パフォーマンスの専門家である Brendan D. Gregg 氏は、LinuxCon N...

MySQL 5.7 でブロックポジショニング DDL の問題を解決する

前回の記事「MySQL テーブル構造の変更、メタデータ ロックを知っておく必要があります」では、MD...

Javascript を使用して、スライドバー効果のあるスライドナビゲーション プラグインを開発します。

目次1. はじめに2. 使用方法3. 開発プロセス1. モデル例2. イベントとアニメーション4. ...

シンプルなショッピングフォームを実装するJavaScript

この記事では、簡単なショッピングフォームを実装するためのJavaScriptの具体的なコードを参考ま...

JavaScript の例におけるループの使用法の詳細な説明

退屈だったので、ループに関する簡単な演習をいくつかまとめてみました。JS を学び始めたばかりの方に役...

node.js の require メソッドの読み込みルールの詳細な説明

require メソッドの読み込みルールキャッシュからの読み込みを優先するコアモジュールパス形式のモ...

HTML5+CSS3 ヘッダー作成例と更新

前回、私たちは 2 つのヘッダー レイアウト (フレックスボックス 1 つとフロート 1 つ) を考...

このポイントのJavaScriptの基本

目次これ方法オブジェクト内これを隠した厳密モード要約するJavaScript の this も不思議...

MySQL公式パフォーマンステストツールmysqlslapの使い方の紹介

目次導入説明書実際の経験まとめ導入MySQL は最も人気のあるオープンソース データベースとして、さ...

Docker 可視化グラフィックツール portainer の詳細な説明

目次1. ポーテナーの紹介2. Portainer アーキテクチャの概要3. Portainerのイ...

LinuxにPHP7をインストールする方法の詳細な説明

Linux に PHP7 をインストールするにはどうすればいいですか? 1. 依存パッケージをインス...

MySQLログに関する知識のまとめ

目次SQL実行順序ビンログ何ですかいつ生産されるのか何の役に立つんだディスクはいつドロップされますか...