2015-06-29 3 views
-3

здесь, в функции drop, я вызываю show div после того, как каждое значение повторяется из функции array.the showdiv, устанавливает div в display:block; и отображает данные внутри it.in show div function. Я пытаюсь скрыть div каждые 3,5 секунды после было показано, и когда снова выполняется следующая итерация, он снова не показывает div, так как только в первый раз он показывает div в течение некоторого времени, и он скроет div. и снова, когда он вызывает функцию showdiv, он не показывает div.Как вызвать функцию javascript каждые 3,5 секунды?

Я хочу показать div и через 3,5 секунды я хочу скрыть div.how я могу это сделать?

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); 
} 

ответ

3
setInterval(function(){ 
    $('.product-view-display').toggle(); }, 
3500); 

Используйте setInterval вместо этого. Тайм-аут вызывает функцию один раз. Интервал будет продолжать вызывать функцию через указанный промежуток времени (миллисекунды).

Если вам нужно в конце концов, это остановить, см: Stop setInterval call in JavaScript

Больше на JQuery переключения: http://api.jquery.com/toggle/

+1

Почему они разрабатывают '! $ ('. Product-view-display'). Is (': visible')'? '$ ('. product-view-display'). toggle()' будет делать то же самое –

+0

@TrueBlueAussie - хорошо пойман. Сейчас отредактируйте ответ, не знаю, зачем я это сделал! –

0

просто использовать ниже Javascript метод, который задает интервал 3,5 сек

setInterval(function() { 
 
    // write here code that you want to execute..... 
 
}, 3500);

+0

Это не отвечает на вопрос. Бит, который вы включили, я уже написал. –

1

Проблема с вашим кодом заключается в том, что вы планируете показ, и в то же время планировать скрытие. Это означает, что в зависимости от заданного тайм-аута показ будет немедленно отменен скрытием.

Вы должны планировать следующий шаг в обратном вызове 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, чтобы решить, хотите ли вы, чтобы показать и обновить содержимое, или просто скрыть Это.

Смежные вопросы