设置间隔功能在jsp中不起作用?

时间:2015-07-26 08:12:34

标签: javascript jquery jsp setinterval

setInterval函数在我的jsp页面中不起作用,下面是我的代码: -

<script>
    $(document).ready(function(){

        $('form[name="lgform"]').submit(function(evnt){
            evnt.preventDefault();

        try{
            mapPlotVar.clearInterval();
            }
            catch(e)
            {
            }
            mapPlotVar=setInterval($("#btn_login").click(function(){console.log("update");},20000));

        });

        $("#btn_login").click(function(){

             alert("hi");

        });

    });

    </script>


    <body>

    <form name="lgform">
    <div>

    <table id="table"  >
        <tr>

            <td width="35px"><input id="mob"  type="text" name="mob_nu" placeholder="1234567890"  maxlength="10"></td>

            <td width="100px"><input type="button" name="login_btn" id="btn_login" value="Login"></td>

            <td width="100px"><label for="Login" style="color: red" id="login_val"></label></td>

        </tr>

    </table>
    </div>
    </form>

    </body>
    </html>

点击&#34; btn_login&#34;一旦我希望每20秒后调用一次该功能,以便我收到警告信息&#34;嗨&#34;每隔20秒,但是&#34;嗨&#34;只显示一次,setInterval函数不起作用。我的代码出了什么问题?任何一段代码都表示赞赏。

我尝试以不同的方式在这里设置Interval,因为我希望在我第一次点击之后调用该函数并在每20秒后继续调用它如果我们将set interval函数放在我们调用的函数中它就不会工作按钮按常规方式点击。 提前致谢

5 个答案:

答案 0 :(得分:2)

 xtabs(cnt~Name+type, df)

以上内容将调用 with(df, tapply(cnt, list(Name, type), FUN=I)) 一次并将其返回值(一个jQuery对象)传递给setInterval($("#btn_login").click(function(){console.log("update");},20000)); ,但setInterval需要一个可调用函数作为其第一个参数。

通过包装到匿名函数来实现它的正确方法:

jQuery.click

但是这仍然没有多大意义,因为这样一个新的点击事件处理程序将每20秒添加(但不是执行)到元素。

答案 1 :(得分:1)

您的代码有四个基本问题:

  1. 您在提交表单时执行所有操作,但您没有提交表单的机制(并且您的说明表明您不希望它在提交时触发)。
  2. 当点击按钮时,告诉浏览器执行操作的代码正在传递给setInterval,而不是相反。
  3. 您没有将功能传递给setInterval
  4. 您希望每个时间段运行的代码都远离您的间隔代码
  5. 您需要丢弃大部分代码并重新开始。

    var interval;
    
    function run_on_interval_when_button_is_clicked(){
        alert("hi!");
    }
    
    function run_when_button_is_clicked(event) {
        event.preventDefault();
        interval = setInterval(
            run_on_interval_when_button_is_clicked,
            20000
        );
    }
    
    $(document).ready(function(){
        $("#btn_login").on('click', run_when_button_is_clicked);
    });
    

    这些都与JSP无关。这是服务器端代码。

答案 2 :(得分:1)

您的代码存在很多问题。忽略其他问题,如果要在按钮单击时为函数设置20秒间隔,则需要启动单击处理程序内部的间隔。

    $("#btn_login").click(function(){

         setInterval( function () {
             alert('hi');
         }, 20000);

    });

当然,这将在每次点击按钮时发生。解决问题的一种方法是使用.one('click', function() { setInterval...})而不是.click(),因为它只能在第一次点击时使用。但由于看起来你也希望取消这段时间,你也需要照顾它。

编辑:

    var interval;
    $("#btn_login").one( 'click', function() {
         function run () {alert('hi');}
         run();
         interval = setInterval( run, 20000 );

    });
    // you can now cancel this interval somewhere else
    function someCallback () {
        if ( interval )
            clearInterval(interval);
    }

答案 3 :(得分:0)

&#13;
&#13;
var interval;

$('#btn').on('click',function(){
  
  if(typeof (interval) === 'undefined') {
    
    interval = setInterval(function(){
    alert('hi');
    },20000);
    
    }
  
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button id="btn">Click</button>
&#13;
&#13;
&#13;

答案 4 :(得分:-1)

$('#btn_login').on('click', function(){
        setInterval(function(){ console.log("update"); }, 20000);
});