Search code examples
javascripthtmljquerytimerdisable

Adding +1 to a div with other button


I have a button with a 10 second timer. When the timer runs, the button is disabled for 10 seconds. After 10 seconds the button is enabled again and you get +$25 in your account (Div). Run Code snippet to see:

 $('#btn').prop('disabled',true);
    startCountDown();

    function getCounter(){
        return  parseInt($('#counter').html());
    }
    function setCounter(count) {
        $('#counter').html(count);
    }

    $("#btn").click(function() {
        setCounter(getCounter()+25);
        $('#btn').prop('disabled',true);
        startCountDown();
    });

    function startCountDown() {
        var minutes = 0,
            seconds = 10;
        $("#countdown").html(minutes + ":" + seconds);
        var count = setInterval(function() {
            if (parseInt(minutes) < 0 || parseInt(seconds) <=0 ) {
                $("#countdown").html("Collect");
                clearInterval(count);
                $('#btn').prop('disabled',false);
            } else {
                $("#countdown").html(minutes + ":" + seconds);
                seconds--;
                if (seconds < 10) seconds = "0" + seconds;
            }
        }, 1000);
    }
 #total {
        display: inline-flex;
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="total">
    <div id="counter">0</div>
    <div id="money">$</div>
</div><br>
<button id="btn">
    <span id="countdown">Collect</span>
</button>

Now I wanted to add a button that you can click all the time and every time you click on the button +1$ should be added to your account. When I made the button, everything worked without problems until I noticed that the button with the timer no longer worked. Here is the code I used for everything in total:

// add one button start

const addOneButton = document.querySelector('.addOneButton');
    addOneButton.onclick = Counter;
    const clicks = document.querySelector('#counter');
    clicks.id = document.querySelector('counter');

    var a = 0;

    function Counter() {
        a += 1;
        clicks.innerHTML = a;
    }

// Timer Button Part start

    $('#btn').prop('disabled',true);
    startCountDown();

    function getCounter(){
        return  parseInt($('#counter').html());
    }
    function setCounter(count) {
        $('#counter').html(count);
    }

    $("#btn").click(function() {
        setCounter(getCounter()+25);
        $('#btn').prop('disabled',true);
        startCountDown();
    });

    function startCountDown() {
        var minutes = 0,
            seconds = 10;
        $("#countdown").html(minutes + ":" + seconds);
        var count = setInterval(function() {
            if (parseInt(minutes) < 0 || parseInt(seconds) <=0 ) {
                $("#countdown").html("Collect");
                clearInterval(count);
                $('#btn').prop('disabled',false);
            } else {
                $("#countdown").html(minutes + ":" + seconds);
                seconds--;
                if (seconds < 10) seconds = "0" + seconds;
            }
        }, 1000);
    }
#total {
        display: inline-flex;
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="total">
    <div id="counter">0</div>
    <div id="money">$</div>
</div><br>
<button id="btn">
    <span id="countdown">Collect</span>
</button>

<button class="addOneButton">Add One!</button>

Do you have any idea what I did wrong?


Solution

  • Maybe I misunderstood your question, but why not just add a similar method of adding + 1, as well as +25. Like this:

    $(".addOneButton").click(function() {
       setCounter(getCounter() + 1);
    }); 
    

    $('#btn').prop('disabled',true);
        startCountDown();
    
        function getCounter(){
            return  parseInt($('#counter').html());
        }
        function setCounter(count) {
            $('#counter').html(count);
        }
    
        $("#btn").click(function() {
            setCounter(getCounter()+25);
            $('#btn').prop('disabled',true);
            startCountDown();
        });
        
         $(".addOneButton").click(function() {
           setCounter(getCounter() + 1);
         }); 
    
        function startCountDown() {
            var minutes = 0,
                seconds = 10;
            $("#countdown").html(minutes + ":" + seconds);
            var count = setInterval(function() {
                if (parseInt(minutes) < 0 || parseInt(seconds) <=0 ) {
                    $("#countdown").html("Collect");
                    clearInterval(count);
                    $('#btn').prop('disabled',false);
                } else {
                    $("#countdown").html(minutes + ":" + seconds);
                    seconds--;
                    if (seconds < 10) seconds = "0" + seconds;
                }
            }, 1000);
        }
    #total {
            display: inline-flex;
        }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div id="total">
        <div id="counter">0</div>
        <div id="money">$</div>
    </div><br>
    <button id="btn">
        <span id="countdown">Collect</span>
    </button>
    <button class="addOneButton">Add One!</button>