简体   繁体   English

如何在jQuery中单击按钮时调用函数

[英]How to call a function on button click in jQuery

I have written a code in jQuery:我用jQuery写了一段代码:

<span id="counter-up" class="timer">
</span>

<div class="buttons">
    <button id="trigger">Result!</button>
</div>
</div>
<div class="container">
</div>

<script>
    var Numbers = 30;

    function secondPassed() {
        var random = Math.random() * 2024 + 10;
        random = parseInt(random);
        document.getElementById('counter-up').innerHTML = random;
        if (Numbers == 0) {
            clearInterval(countdownTimer);
            document.getElementById('counter-up').innerHTML = "2024";
        } else {
            Numbers--;
        }
    }

    var countdownTimer = setInterval('secondPassed()', 100);
</script>

In this code the function secondPassed is called as I load the page.在这段代码中,当我加载页面时调用了函数secondPassed I want that this function should be called when I click on button with Id trigger .我希望当我点击带有 Id trigger按钮时应该调用这个函数。 How can I achieve this?我怎样才能做到这一点?

Bind event on the element and pass the handler as the function reference在元素上绑定事件并将处理程序作为函数引用传递

$('#trigger').click(secondPassed);

I'd also recommend to use non-string callback to setInterval function.我还建议使用非字符串回调来 setInterval 函数。

var countdownTimer = setInterval(secondPassed, 100);
  1. You need to reset the variables to make the timer work您需要重置变量以使计时器工作
  2. Don't use string version of function as callback to setInterval use function reference.不要使用函数的字符串版本作为回调来setInterval使用函数引用。
  3. As you've included jQuery on the page, use it to manipulate DOM.当您在页面上包含 jQuery 时,请使用它来操作 DOM。

Live Demo现场演示

 var Numbers = 30, countdownTimer; var $counter = $('#counter-up'); function secondPassed() { var random = parseInt(Math.random() * 2024 + 10, 10); $counter.html(random); if (Numbers == 0) { clearInterval(countdownTimer); $counter.innerHTML = "2024"; } else { Numbers--; } } countdownTimer = setInterval(secondPassed, 100); $('#trigger').click(function() { Numbers = 30; countdownTimer = setInterval(secondPassed, 100); });
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <span id="counter-up" class="timer"> </span> <div class="buttons"> <button id="trigger">Result!</button> </div> <div class="container"> </div>

try to do this:尝试这样做:

$(document).ready(function(){
    secondPassed();//after document ready
    $('#trigger').on('click',function(){
           secondPassed();//onclick of button
    });

});
<script>
    D = document

    $(D).ready(function() {

        $("#trigger").click(function() {
            var Numbers = 30;
            var random = Math.random() * 2024 + 10;
            random = parseInt(random);
            document.getElementById('counter-up').innerHTML = random;
            if (Numbers == 0) {
                clearInterval(countdownTimer);
                document.getElementById('counter-up').innerHTML = "2024";
            } else {
                Numbers--;
            }
        });


    });
</script>

I hope it works but all the answer are near that I think :D我希望它有效,但我认为所有答案都接近:D

try this尝试这个

<script>
    $(function() {
        $('#trigger').on('click', function() {
            secondPassed();
        });
    });
    var Numbers = 30;

    function secondPassed() {
        var random = Math.random() * 2024 + 10;
        random = parseInt(random);
        document.getElementById('counter-up').innerHTML = random;
        if (Numbers == 0) {
            clearInterval(countdownTimer);
            document.getElementById('counter-up').innerHTML = "2024";
        } else {
            Numbers--;
        }
    }

    var countdownTimer = setInterval(secondPassed(), 100);
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM