我有一个代码块,我想每10秒左右执行一次,也可以按一下按钮点击事件。我应该创建一个函数来节省编码重复吗?我将在页面上有很多按钮来触发这段代码,但我意识到我可以使用类选择器来触发代码。我需要定时器间隔,因为第三方将能够更改代码正在检查的值,我不关心定时器是否超级准确。
如何将代码更改为函数?我已经看到了一些创建函数的例子,但我没有看到任何符合我要求的例子。
//This Ajax checks the current on/off status of the passed X10 code
$('img.checkStatus').each(function(i, obj) {
$x10Device = $(this).data("x10");
var data="url=http://192.168.0.34:81/tenHsServer/tenHsServer.aspx? t=ab&f=DeviceStatus&d=" + $x10Device ;
$.ajax({
url:"urlencode.php",
data: data,
type: "POST",
success: function(data) {
myd = $('<span />').html(data).find("#Result").text();
var Nmyd = myd.charAt(3);
if (Nmyd == '2'){
$('img').attr('src','lightbulbon.png')
}
else{
$('img').attr('src','lightbulboff.png')};
},
error: function (request, status, error) {
alert(request.responseText);
}
});
});
});
感谢您的任何想法和帮助
答案 0 :(得分:1)
如果需要从多个位置调用代码块,将它封装在函数中然后根据需要调用函数绝对是个好主意。所以:
function someFuncName() {
// your block of code here
}
根据功能赋予函数一个有意义的名称,在您的情况下checkStatus
可能是合适的。
&#34;我想每10秒左右执行一次&#34;
好的,您可以使用setInterval()
function:
var intervalId = setInterval(someFuncName, 10000); // specify delay in milliseconds
// and later, if you need to cancel the interval:
clearInterval(intervalId);
请注意,当您将someFuncName
传递给setInterval()
时,不在其名称后面包括括号 - 因为您没有调用该函数,所以将对它的引用传递给setInterval()
,然后JS以指定的间隔为你调用该函数。
&#34;我会在页面上有很多按钮来激活这段代码,但我意识到我可以使用类选择器来触发代码&#34;
好的,所以将您的函数绑定为指定类的所有元素的单击处理程序:
$(".classOfButtonsHere").on("click", someFuncName);
答案 1 :(得分:0)
你可以尝试这样的事情
<script type="text/javascript" >
var timer = setInterval("timerAjaxFunction()" , 10000)
function timerAjaxFunction ()
{
// your ajax code for 10 seconds comes here...
}
$(document).ready(function(){
$(".selctorClassofbutton").on("click",function(){ //button to call function
clearInterval(timer);
timerAjaxFunction ();
timer = setInterval("timerAjaxFunction()" , 10000);
})
});
</script>