2014-11-06 67 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