我用onclick方法调用一个带有参数的函数我想要做的是我希望这个函数每1分钟重复一次这里是html代码: 我在everyclick上调用一个函数,其中一些参数为id id获取lat longs,并且它在map中绘制,我已经完成了所有工作,除了我得到的数据保持从后端接收所以我想要做的是,因为我点击了href我想要那个特定的要发送的ID并且仅保留接收该特定id的数据,当我单击第二个时,应该停止第一个并启动另一个。
<html>
</head>
<body>
<a href="#" onclick="todo(1)"></a>
<a href="#" onclick="todo(2)"></a>
</body>
</html>
的javascript:
function todo(id)
{
$.ajax({
type:"GET",
url: "example?value="+id,
dataType:"text",
success: function(data)
{
//parsing;
});
}
答案 0 :(得分:1)
试试这个......
使用setInterval每1分钟调用一次函数,并在调用函数“test”时自动点击“触发”功能
<html>
</head>
<body>
<a href="#" class="todo" onclick="todo(1)">sdsd</a>
<a href="#" class="todo" onclick="todo(2)">sdsd</a>
</body>
</html>
function todo(id)
{
$.ajax({
type:"GET",
url: "example?value="+id,
dataType:"text",
success: function(data)
{
//parsing;
});
}
function test() {
$(".todo").trigger("click");
}
var refreshId = setInterval(test, 60000);
答案 1 :(得分:1)
您只需在setInterval
功能中拨打todo
即可拨打不同的电话,更改您的功能:
function todo(id) {
setInterval(function() {
/*$.ajax({
type: "GET",
url: "example?value=" + id,
dataType: "text",
success: function(data) {
//parsing;
});*/
console.log(id);
}, 1000);
}
<a href="#" onclick="todo(1)">link1</a>
<a href="#" onclick="todo(2)">link2</a>
我在这里仅使用1000
毫秒进行测试,您只需将其更改为60000
以满足您的需求,您可以在控制台中查看结果。
注意:强>
请注意,对于每次点击,您都会触发新的setInterval()
,因此您必须在第一次setInterval()
之后停用点击事件以避免此问题。
答案 2 :(得分:1)
目前尚不清楚您的问题和评论可能需要哪些约束,但也许是这样的?
如果出现ajax错误,将停止重复。
单击按钮将取消当前重复并立即开始新的重复(1-4)。正在进行的请求不会被取消,并且不会包含任何检查,以便在完成时忽略处理它们。
包含一个停止按钮,这将停止重复,但不会停止正在进行的请求。
请求是异步的,并且没有做任何努力来确保按请求顺序处理它们。
这是一个非常基本的例子,可以让你朝着正确的方向前进。
var pre = document.getElementById('out'),
interval = 5,
running = false,
fetching = false,
timerId;
function stop() {
clearInterval(timerId);
running = false;
}
function todo(id) {
fetching = true;
$.ajax({
type: 'GET',
url: 'http://jsonplaceholder.typicode.com/albums?id=' + id,
dataType: 'jsonp',
error: function (qXHR, textStatus, errorThrown) {
pre.textContent += id + ': ' + textStatus + '\n';
stop();
},
success: function (data) {
pre.textContent += id + ': ' + data[0].title + '\n';
},
complete: function () {
fetching = false;
}
});
}
function start(id) {
if (running) {
stop();
}
running = true;
if (!fetching) {
todo(id);
}
timerId = setInterval(function () {
if (!fetching) {
todo(id);
}
}, interval * 1000);
}
document.body.addEventListener('click', function (evt) {
var target = evt.target;
if (target.classList.contains('album')) {
start(target.value);
}
}, false);
document.getElementById('stop').addEventListener('click', function () {
stop();
}, false);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="album" value="1">1</button>
<button class="album" value="2">2</button>
<button class="album" value="3">3</button>
<button class="album" value="4">4</button>
<button id="stop">stop</button>
<pre id="out"></pre>
答案 3 :(得分:0)
您可以使用javascript的setTimeout。 它将在指定的时间间隔内重复给定的函数。
Javascript setTimeout function repeat
OR
setInterval( function(){ todo(id);}, 60000);
答案 4 :(得分:0)
利用setTimeout
再次调用该函数:
function todo(id)
{
$.ajax({
type:"GET",
url: "example?value="+id,
dataType:"text",
success: function(data)
{
//parsing;
});
setTimeout(function(){todo(id)}, 60000);
}
如果您还希望在某些条件下清除超时:
var timer;
function todo(id)
{
$.ajax({
type:"GET",
url: "example?value="+id,
dataType:"text",
success: function(data)
{
//parsing;
});
timer = setTimeout(function(){todo(id)}, 60000);
if(//Your condition){
window.clearTimeout(timer);
}
}