2014-11-06 70 views
0

我有可以单击的元素。元素的数量取决于MySQL查询。
当一个元素被点击时,它需要每秒用AJAX查找数据。
每个元素都有他从数据库中的具体答案。
当预期数据到达一个元素时,该功能必须停止该元素。Javascript在setInterval中添加参数

我可以让它工作,如果有一个元素,但不知道如何继续如果多个元素来自查询。

//MYSQL QUERY 

while($query->fetch()) 
{ 
<div id="<?php echo $query['id']; ?>" 
    onclick='getData("<?php echo $query['id']; ?>");'> 

</div> 
} 

的js:

function getData(id) { 

    var x = setInterval(function(){ajaxRequest(id)}, 1000); 

} 

function ajaxRequest(id){ 

    //select response from database where ID = id 
    if($data['response'] == "1") 
    { 
    document.getElementById(id).innerHTML = "There is new data"; 
    clearInterval(x); 
    } 
} 

回答

1

最简单的方法是将您的区间ID存储在您的DOM元素:

elm.addEventListener("click", function() { 
    elm.intervalID = setInterval(/* whatever */, 1000); 
}); 

然后你就可以清除:

clearInterval(elm.intervalID); 
+0

只是一个问题:你应该使用'data'属性? – jasonscript 2014-11-06 01:39:11

0

如果只是查找数据,为什么不使用ca JQuery的AJAX对象的llback功能?

$.ajax("service.php") 
    .done(function(data) { 
     document.getElementById(id).innerHTML = data; 
    }); 

http://api.jquery.com/jquery.ajax/

+0

我疯狂地猜测,但可能是因为问题没有用jQuery标记,OP也没有在任何地方使用jQuery? – adeneo 2014-11-06 00:21:20

+0

这是什么'$ data ['response']'? – Papa 2014-11-06 00:21:59

+0

这是一个名为'$ data'的对象,美元并不意味着正在使用jQuery,即使它最可能是 – adeneo 2014-11-06 00:28:27