【问题标题】:jquery shopping cart value onchangejquery 购物车值 onchange
【发布时间】:2020-02-04 08:30:50
【问题描述】:

我为购物车编写了代码。对于数量值的每次变化(增加或减少),价格都应该发生变化。我试图以相对于数量的价格降低来实现这一点。我可以更改数量,但无法更改价格字段,因为价格仍然给我console.log 的对象类型。谁能指出我做错了什么?

下面是代码:

product.html

            <tr>
                <td class="product-thumbnail">
                  <img src="images/cloth_1.jpg" alt="Image" class="img-fluid">
                </td>
                <td class="product-name">
                  <h2 class="h5 text-black">Top Up T-Shirt</h2>
                </td>
                <!-- The price -->
                <td>$49.00</td>
                <td>
                  <div class="input-group mb-3" style="max-width: 120px;">
                    <div class="input-group-prepend">
                      <button class="btn btn-outline-primary js-btn-minus" type="button">&minus;</button>
                    </div>
                    <input type="text" class="form-control text-center" value="1" placeholder="" aria-label="Example text with button addon" aria-describedby="button-addon1">
                      <div class="input-group-append">
                        <button class="btn btn-outline-primary js-btn-plus" type="button">&plus;</button>
                      </div>
                    </div>
                </td>
                <td>
                      <div class="price"></div>
                </td>
                <td><a href="#" class="btn btn-primary btn-sm">X</a></td>
              </tr>
              <tr>
                <td class="product-thumbnail">
                  <img src="images/cloth_2.jpg" alt="Image" class="img-fluid">
                </td>
                <td class="product-name">
                  <h2 class="h5 text-black ">Polo Shirt</h2>
                </td>
                <td>$49.00</td>
                <td>
                  <div class="input-group mb-3" style="max-width: 120px;">
                    <div class="input-group-prepend">
                      <button class="btn btn-outline-primary js-btn-minus" type="button">&minus;</button>
                    </div>
                    <input type="text" class="form-control text-center" value="1" placeholder="" aria-label="Example text with button addon" aria-describedby="button-addon1">
                    <div class="input-group-append">
                      <button class="btn btn-outline-primary js-btn-plus" type="button">&plus;</button>
                    </div>
                  </div>
                </td>
                <td>
                    <div class="price">8</div>
                </td>
                <td><a href="#" class="remove btn btn-primary btn-sm">X</a></td>
              </tr>

main.js

    <script>
    $('.js-btn-minus').on('click', function(e)
        {
            e.preventDefault();
            if ( $(this).closest('.input-group').find('.form-control').val() !=0 && $(this).closest('.input-group').find('.form-control').val() >0)
            {
                $(this).closest('.input-group').find('.form-control').val(parseInt($(this).closest('.input-group').find('.form-control').val()) - 1);
                var va = parseInt($(this).closest('.input-group').find('.form-control').val());
                va = (parseInt(va));
                this.a = va;
                console.log(this.a);
                var price = $(this).closest('tr').find('.price');
                console.log(price.val(parseInt(this.a)));
            } 
        }
 </script>

【问题讨论】:

  • 创建 jsfiddle。
  • 所以对于前。你有$49.00。现在如果你点击+,你想把价格提高到$50.00,如果你点击-,你想降低价格。我对吗?或者你想要别的东西?
  • “因为价格仍然为我提供了我 console.log 中的对象类型” - 您没有使用console.log(price.val(parseInt(this.a))) 记录任何实际价格值,您正在记录jQuery 的val() 方法的返回值——当然这又是一个 jQuery 对象(因为这是方法链首先起作用的基础。)

标签: javascript jquery html onchange shopping-cart


【解决方案1】:

使用 price.html 或 price.text 代替 price.val 然后记住,输入通过 .val() 获取值,但其他元素通过 .html() 或 .text() 获取

【讨论】:

    【解决方案2】:

    首先,您的table 结构不合理。第二件事是您的要求对我来说并不完全清楚。

    我想我假设您想提高或降低班级为price 的价格。

    当您使用val() 时,您将收到整个元素,并且它始终是对象。

    如果您能说出确切的问题/要求,我可以帮助您。

    $('.js-btn-minus').on('click', function(e)
    {
        e.preventDefault();
        var next_val = parseInt($(this).closest('.input-group').find('.form-control').val()) - 1;
        if (next_val < 0){
          next_val = 0
          $(this).closest('.input-group').find('.form-control').val(0)
        }
        else{
          $(this).closest('.input-group').find('.form-control').val(next_val);
          var existing_value = $(this).closest('tr').find('.price').html()
        if ((existing_value || '') == ''){
          $(this).closest('tr').find('.price').html(next_val)
        }
        else{
          $(this).closest('tr').find('.price').html(existing_value - 1)
        }
        }
        
        // Price updates    
        //var current_price = parseInt($(this).closest('.input-group').parent().prev('td').html().replace('$', ''))
        //var final_price = current_price - next_val;    
        
    });
    $('.js-btn-plus').on('click', function(e)
    {
        e.preventDefault();
        var next_val = parseInt($(this).closest('.input-group').find('.form-control').val()) + 1;
        if (next_val < 0){
        next_val=0;
          $(this).closest('.input-group').find('.form-control').val(0)
        }
        else{
          $(this).closest('.input-group').find('.form-control').val(next_val);
          var existing_value = parseInt($(this).closest('tr').find('.price').html())
        if ((existing_value || '') == ''){
          $(this).closest('tr').find('.price').html(next_val)
        }
        else{
          $(this).closest('tr').find('.price').html(existing_value + 1)
        }
        }
      // Price updates
        //var current_price = parseInt($(this).closest('.input-group').parent().prev('td').html().replace('$', ''))
        //var final_price = current_price + 1
        //console.log(final_price)
        
    
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <table>
    <tr>
                    <td class="product-thumbnail">
                      <img src="images/cloth_1.jpg" alt="Image" class="img-fluid">
                    </td>
                    <td class="product-name">
                      <h2 class="h5 text-black">Top Up T-Shirt</h2>
                    </td>
                    <!-- The price -->
                    <td class="current_price">$49.00</td>
                    <td>
                      <div class="input-group mb-3" style="max-width: 120px;">
                        <div class="input-group-prepend">
                          <button class="btn btn-outline-primary js-btn-minus" type="button">&minus;</button>
                        </div>
                        <input type="text" class="form-control text-center" value="1" placeholder="" aria-label="Example text with button addon" aria-describedby="button-addon1">
                          <div class="input-group-append">
                            <button class="btn btn-outline-primary js-btn-plus" type="button">&plus;</button>
                          </div>
                        </div>
                    </td>
                    <td>
                          <div class="price"></div>
                    </td>
                    <td><a href="#" class="btn btn-primary btn-sm">X</a></td>
                  </tr>
                  <tr>
                    <td class="product-thumbnail">
                      <img src="images/cloth_2.jpg" alt="Image" class="img-fluid">
                    </td>
                    <td class="product-name">
                      <h2 class="h5 text-black ">Polo Shirt</h2>
                    </td>
                    <td class="current_price">$49.00</td>
                    <td>
                      <div class="input-group mb-3" style="max-width: 120px;">
                        <div class="input-group-prepend">
                          <button class="btn btn-outline-primary js-btn-minus" type="button">&minus;</button>
                        </div>
                        <input type="text" class="form-control text-center" value="1" placeholder="" aria-label="Example text with button addon" aria-describedby="button-addon1">
                        <div class="input-group-append">
                          <button class="btn btn-outline-primary js-btn-plus" type="button">&plus;</button>
                        </div>
                      </div>
                    </td>
                    <td>
                        <div class="price">8</div>
                    </td>
                    <td><a href="#" class="remove btn btn-primary btn-sm">X</a></td>
                  </tr>
                  </table>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多