动态增加/减少计数器

问题描述 投票:0回答:2

我正在尝试实现动态递增/递减计数器。这是应该如何工作的:

我有一个“添加”按钮。当我单击此按钮时,该按钮应消失并且出现一个减号按钮,数字输入和加号按钮。单击“ +”应增加“购物车”上的计数器,单击“-”应减少。

下面是html mycode

<body>

    <div id="page-wrap">

        <h1>Cart Inc Dec</h1>
        <a href="#" class="btn btn-info btn-lg mt-5 mr-5 mb-5">
            <span class="glyphicon glyphicon-shopping-cart"><span id="itemCount"></span></span> Check Out
        </a>
        <br>
        <a id="btnAddItem" class="btn btn-primary float-right mt-5 mb-5 mr-5">ADD</a>   
        <div class="addItem">
        </div>

    </div>

</body>

Jquery:

<script>
var addElement = 0;
 $(document).ready(function(){
 $("#btnAddItem").on("click", function (event) {
    if(addElement==0){
        $(".addItem").append(('<button type="button" class="counter decrease">-</button><input type="text" size="5" id="txtCounter" /><button type="button" class="counter increase">+</button>'));
        }
        addElement++;
    });
    var $input = $("#txtCounter");
// Initialise the value to 0
$input.val(0);
debugger;
// Increment/decrement count
$(".counter").click(function(){
    console.log('here i am');

    if ($(this).hasClass('increase'))
        $input.val(parseInt($input.val())+1);
    else if ($input.val()>=1)
        $input.val(parseInt($input.val())-1);
});

});
</script>

现在问题出在我添加动态+,文本输入计数器,-控件后,当我单击+或减号时什么也没有发生。 $(".counter").click(function()中的console.log没有给出任何信息。

我想念什么吗?

javascript jquery counter
2个回答
0
投票

您可以这样操作:将$(".counter").click(function() {});调整为$(document).on("click", ".counter", function(){});,因为在初始加载页面时不存在带有类计数器的元素,因此必须从静态父级委派click()事件元素添加到使用on()添加的计数器元素。然后,在此点击函数内移动变量声明var $input = $("#txtCounter");,因为在初始加载页面时不存在ID为txtCounter的元素,并在添加后初始化初始化$("#txtCounter").val(0);

var addElement = 0;
$(document).ready(function() {
  $("#btnAddItem").on("click", function(event) {
    if (addElement == 0) {
      $(".addItem").append(('<button type="button" class="counter decrease">-</button><input type="text" size="5" id="txtCounter" /><button type="button" class="counter increase">+</button>'));
      // Initialise the value to 0
      $("#txtCounter").val(0);
    }
    addElement++;
  });

  // Increment/decrement count
  $(document).on("click", ".counter", function() {
    var $input = $("#txtCounter");
    if ($(this).hasClass('increase')) {
      $input.val(parseInt($input.val()) + 1);
    } else if ($input.val() >= 1) {
      $input.val(parseInt($input.val()) - 1);
    }
  });

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <div id="page-wrap">
        <h1>Cart Inc Dec</h1>
        <a href="#" class="btn btn-info btn-lg mt-5 mr-5 mb-5">
            <span class="glyphicon glyphicon-shopping-cart"><span id="itemCount"></span></span> Check Out
        </a>
        <br>
        <a id="btnAddItem" class="btn btn-primary float-right mt-5 mb-5 mr-5">ADD</a>   
        <div class="addItem">
        </div>
    </div>

0
投票

您可以更改脚本并尝试如下操作:

var addElement = 0;
var myCounter= function(action){
    var val = document.getElementById("txtCounter").value;
  val = parseInt(val);
    if(action == 2){ //Increase
        document.getElementById("txtCounter").value=val+1;
    }else if(val > 1){

    document.getElementById("txtCounter").value=val-1;
  }
};
 $(document).ready(function(){
 $("#btnAddItem").on("click", function (event) {
    if(addElement==0){
        $(".addItem").append(('<button type="button" onclick="myCounter(1);" class="counter decrease">-</button><input type="text" size="5" id="txtCounter" value="0" /><button type="button" onclick="myCounter(2);" class="counter increase">+</button>'));
        }
        addElement++;
    });

});

© www.soinside.com 2019 - 2024. All rights reserved.