如何每3.5秒调用一次javascript函数
How to invoke javascript function every 3.5 seconds?
在drop函数中,我在从数组中迭代每个值后调用showdiv。showdiv函数将div设置为display:block;
,并显示其中的数据。在showdiv函数中,在显示div后,我试图每3.5秒隐藏一次div,当下一次迭代完成时,它不会再次显示div,这是它第一次显示div若干次,它将隐藏div。当它调用showdiv函数时,它不会显示div。
我想显示div,3.5秒后我想隐藏div。我该怎么做?
function drop() {
clearMarkers();
for (var i = 0; i < locations.length; i++) {
var city = locations[i][0];
var pro_cat = locations[i][1];
var marker_icon = locations[i][3];
var product_image = locations[i][4];
var marker_src =
addMarkerWithTimeout(locations[i][2], i * 500, marker_icon);
//alert("dropped");
getCity(city,pro_cat, i * 500);
if(product_image == null)
{
//if image found in row-do nothing
}
else {
//if image found
showdiv(city,product_image, i * 500);
/*window.setTimeout(function() {
hidediv();
},2500);*/
}
}
}
function showdiv(city, imagesrc, timeout)
{
window.setTimeout(function() {
document.getElementById('city-order').innerHTML = "";
document.getElementById('order-product').innerHTML = "";
$('.product-display').addClass("zoomin");
//document.getElementById('product-view-display').style.display = "block";
document.getElementById('product-list-display').style.display = "block";
var order_placed_city = document.getElementById('city-order');
var content = document.createTextNode(city);
order_placed_city.appendChild(content);
var product_order = document.getElementById('order-product');
var elem = document.createElement("img");
product_order.appendChild(elem);
elem.src = imagesrc;
},timeout);
window.setTimeout(function() {
document.getElementById('product-view-display').style.display = "none";
},3500);
}
setInterval(function(){
$('.product-view-display').toggle(); },
3500);
请改用setInterval
。Timeout调用函数一次。Interval将在指定的时间段(毫秒)后继续调用函数。
如果您需要最终停止此操作,请参阅:在JavaScript 中停止setInterval调用
关于jQuery切换的更多信息:http://api.jquery.com/toggle/
您的代码的问题是您安排显示,同时安排隐藏。这意味着,根据给定的超时时间,隐藏会立即撤消显示。
您应该在setTimeout
的回调中安排下一步。
所以你更愿意做的是:
function scheduleShowDiv(city, imageSrc, timeout) {
window.setTimeout(function() { showDiv(city, imageSrc, timeout) }, timeout)
}
function showDiv(city, imageSrc,timeout) {
/* do whatever you need to show the div */
window.setTimeout(function() {
document.getElementById('product-view-display').style.display = "none";
scheduleShowDiv(city, imageSrc, timeout);
}, timeout);
}
另一种选择是使用setInterval
并检查div的存在,以决定是要显示和更新内容,还是只是隐藏它
只需使用下面的javascript方法即可设置3.5秒的间隔
setInterval(function () {
// write here code that you want to execute.....
}, 3500);
相关文章:
- 显示数字,然后每5秒随机更改一次(javascript)
- 使函数只运行一次(Javascript)
- 仅当javascript的新内容出现时,才每3秒更新一次javascript
- 每天递减一个变量一次 - Javascript
- 每个用户/浏览器会话只加载一次Javascript
- 使用Greasemonkey每5秒执行一次Javascript
- 我想在窗口加载后只调用一次JavaScript setInterval函数
- 如何只包含一次javascript文件
- 每周运行一次 JavaScript 函数
- 每天为每个新用户运行一次 JavaScript 函数
- 每 10 次访问(重新加载)显示一次 JavaScript 函数
- 简单嵌套的 setTimeout() 只运行一次 (JavaScript)
- 如何只添加一次JavaScript库
- 每X分钟运行一次JavaScript命令
- 每两次切换播放器一次JavaScript-AngularJS
- 追加一次javascript href link
- 当使用局部视图时,只添加一次javascript代码
- 查找匹配的img src并删除它存在不止一次- Javascript
- 加载cookie时只重载一次javascript页面
- 如何使这个函数运行不止一次JavaScript/jQuery