设置间隔功能在 jsp 中不起作用?
set Interval function is not working in jsp?
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>
单击 "btn_login" 后,我希望每 20 秒调用一次该函数,以便每 20 秒收到一次警报消息 "hi",但 "hi" 只是显示一次,setInterval 函数不起作用。我的代码有什么问题?感谢任何一段代码。
我尝试在这里以不同的方式使用设置间隔,因为我希望在我第一次点击后立即调用该函数,并在每 20 秒后继续,如果我们将设置间隔函数放在函数中,它将无法工作我们以通常的方式调用按钮点击。
提前致谢
setInterval($("#btn_login").click(function(){console.log("update");},20000));
上面将调用 jQuery.click
一次并将其 return 值 (一个 jQuery 对象)传递给 setInterval
但是setInterval 需要一个可调用函数作为它的第一个参数。
包装成匿名函数的正确方法:
setInterval(function() {
$("#btn_login").click(function(){console.log("update");})
}, 20000);
但这仍然没有多大意义,因为这样一个新的点击事件处理程序将添加(但不会执行)到每二十秒一个元素。
您的代码有四个基本问题:
- 您在提交表单时执行所有操作,但您没有提交表单的机制(并且您的描述说您无论如何都不希望它在提交时触发)。
- 点击按钮时告诉浏览器执行操作的代码将传递给
setInterval
,而不是相反。
- 您没有将函数传递给
setInterval
。
- 每个时间段您想要运行的代码与您的间隔代码相去甚远
您需要扔掉大部分代码并重新开始。
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);
});
None与JSP有关系。那是服务器端代码。
var interval;
$('#btn').on('click',function(){
if(typeof (interval) === 'undefined') {
interval = setInterval(function(){
alert('hi');
},20000);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn">Click</button>
$('#btn_login').on('click', function(){
setInterval(function(){ console.log("update"); }, 20000);
});
你的代码有很多问题。忽略其他问题,如果要为按钮点击的功能设置 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);
}
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>
单击 "btn_login" 后,我希望每 20 秒调用一次该函数,以便每 20 秒收到一次警报消息 "hi",但 "hi" 只是显示一次,setInterval 函数不起作用。我的代码有什么问题?感谢任何一段代码。
我尝试在这里以不同的方式使用设置间隔,因为我希望在我第一次点击后立即调用该函数,并在每 20 秒后继续,如果我们将设置间隔函数放在函数中,它将无法工作我们以通常的方式调用按钮点击。 提前致谢
setInterval($("#btn_login").click(function(){console.log("update");},20000));
上面将调用 jQuery.click
一次并将其 return 值 (一个 jQuery 对象)传递给 setInterval
但是setInterval 需要一个可调用函数作为它的第一个参数。
包装成匿名函数的正确方法:
setInterval(function() {
$("#btn_login").click(function(){console.log("update");})
}, 20000);
但这仍然没有多大意义,因为这样一个新的点击事件处理程序将添加(但不会执行)到每二十秒一个元素。
您的代码有四个基本问题:
- 您在提交表单时执行所有操作,但您没有提交表单的机制(并且您的描述说您无论如何都不希望它在提交时触发)。
- 点击按钮时告诉浏览器执行操作的代码将传递给
setInterval
,而不是相反。 - 您没有将函数传递给
setInterval
。 - 每个时间段您想要运行的代码与您的间隔代码相去甚远
您需要扔掉大部分代码并重新开始。
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);
});
None与JSP有关系。那是服务器端代码。
var interval;
$('#btn').on('click',function(){
if(typeof (interval) === 'undefined') {
interval = setInterval(function(){
alert('hi');
},20000);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn">Click</button>
$('#btn_login').on('click', function(){
setInterval(function(){ console.log("update"); }, 20000);
});
你的代码有很多问题。忽略其他问题,如果要为按钮点击的功能设置 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);
}