Javascript 在setInterval中调用onClick函数
我有一个Javascript 在setInterval中调用onClick函数,javascript,ajax,Javascript,Ajax,我有一个onClick函数,它可以正常工作。单击触发此函数一次后,我想使用setInterval定期运行它 以下是我如何修改代码以尝试此操作: var clickData; var isClicked=0; function onClick(e) { console.log("OnClick called") if(isClicked==0){ clickData = this; isClick
onClick
函数,它可以正常工作。单击触发此函数一次后,我想使用setInterval
定期运行它
以下是我如何修改代码以尝试此操作:
var clickData;
var isClicked=0;
function onClick(e) {
console.log("OnClick called")
if(isClicked==0){
clickData = this;
isClicked = 1;
console.log(clickData);
}
let empID = clickData.options.empID;
let reqURL = baseurl + API_KEY + "&MonitoringRef=" + empID;
$.ajax({
type: "GET",
dataType: "jsonp",
url: reqURL,
success: success2,
});
}
if(isClicked==1){
var f = onClick;
f.paramater1 = clickData;
setInterval(f, 500);
}
function success2(json2){
console,log(json2);
//Do something with json2...
}
我已经根据一对一的答案修改了从setInterval
对函数的调用
我认为这里的问题在于将参数传递给函数。有没有办法做到这一点?您可以使用添加单击侦听器,然后在按下按钮并设置间隔后删除单击侦听器:
const buttonID = document.getElementById("INSERT-ID-OF-YOUR-BUTTON-HERE")
const yourFunction = () => {
// your code that you want to be called twice per second goes here
buttonID.removeEventListener("click")
}
buttonID.addEventListener("click", () => {
setInterval(yourFunction, 500);
});
问题是,在函数本身中创建间隔时,进行了无限增长的间隔调用,这可能就是它不起作用的原因。解决方法可以是这样的: 定义函数并使用onClick中的setTimeout调用它:
function onClick(e) {
// Your onClick function body ...
// Add this in your onClick function to call the following function that creates the interval
setTimeout( function() { startInterval(clickData); }, 1);
}
现在,在startInerval函数中,您可以调用onClick;但是,为了防止累积时间间隔,我声明了一个标志来检查并仅创建一次时间间隔:
var checkFlag = false;
function startInterval(clickData){
if(checkFlag === false){
checkFlag = true;
setInterval(function(){onClick(clickData);}, 500);
}
}
我的问题忘了提。我试过这个,但不起作用。没有自动调用
onClick
。我编辑了答案。也许这个解决方法解决了这个问题。onClick
侦听器所连接的元素没有ID。我正在以编程方式添加许多按钮并绑定click操作。因此,根据单击的按钮,ID会发生变化。我在clickData
中也看不到对象id。