I create a presentation with this javascript framework http://lab.hakim.se/reveal-js/#/ and when certain slide is appearing I want to execute function stats(), which display some data from API every 5 seconds, but only when this slide is appearing
function stats(){
$.ajax({
type: "GET",
url: url_survey,
dataType: "json",
success :
function (data) {
//some code to display data
},
error:
//some code
});
}
in HTML file I have this:
<section>
<div id="stats">
</div>
</section>
how can I do it? I wrote this code, but it works always, not only when slide appear
function check(){
if($("#stats").is(":visible"))
stats();
}
check();
setInterval(function(){check()}, 2000);
This can be achieved by using reveal.js states (https://github.com/hakimel/reveal.js#states).
1) Add a unique state to the section that should trigger your method.
2) Add a listener to your custom state using the reveal.js API.
Complete working example: https://gist.github.com/hakimel/cea4305a33713d4a5a7e
To answer Philippe Leefsma's question: you can use bind() to pass arguments, like so:
Assuming drawDiagramOnSlide looks like this:
The bind call will create a function that calls drawDiagramOnSlide with the correct slide name and element (in my case, a div with class diagram inside the slide ).