2010-12-28 2 views
1

Hy парней.Модальное окно загружает динамический контент и меняет его во времени

У меня есть модальное окно, которое загружает страницу, и мне нужно, через 90 секунд загрузить другую страницу.

У меня есть ...

<table id="table4"> 
    <tr> 
     <td>Id:</td> 
     <td>Nome:</td> 
    </tr> 
    <tr> 
     <td>1515</td> 
     <td>Thiago</td> 
    </tr> 
    <tr> 
     <td>2015</td> 
     <td>Guttierre</td> 
    </tr> 
</table> 

Согласно ID, я загрузит страницу, идентификатор представляет .. как http://www.test.com/1515. и через 90 секунд мне нужно загрузить другой идентификатор ... http://www.test.com/2015.

Теперь у меня есть этот скрипт ...

$(document).ready(function() { 

//seleciona os elementos a com atributo name="modal" 
var aux = 2; 
while (($("#table4 tr:nth-child(" + aux + ") td:nth-child(1)") != "")) { 

    var idSOS = $("#table4 tr:nth-child(" + aux + ") td:nth-child(1)").text(); 
    if ((idSOS != "") && (idSOS != undefined) && (idSOS != null) && (idSOS != "Id:")) { 


     $("#dialog, #mask,#closediv").css({ 'display': 'block' }); 
     var maskHeight = "99%"; 
     var maskWidth = "99%"; 
     $('#mask').css({ 'width': maskWidth, 'height': maskHeight }); 

     //Effect 
     $('#mask').fadeIn(800); 
     $("#dialog").fadeIn(1600); 
     $('#mask').fadeTo("slow", 1); 
     $('#dialog').fadeTo("slow", 1); 

     // 
     var winH = $(window).height(); 
     var winW = $(window).width(); 
     //centraliza na tela a janela popup 
     $("#dialog, #mask").css('top', '2px'); 
     $("#dialog, #mask").css('left', '2px'); 

     // 

     setTimeout(function() { 
      var i = idSOS; 
      loadContent(i); 
     }, 10000); 





     aux++; 
     //   continue; 
    } //end IF 
    else { 
     $("#dialog").empty(); 
     $("#dialog, #mask").hide(); 
     break; 
    }; 


}; //END WHILE 


$("#dialog, #mask").hide(); 

//se o botão fechar/tela for clicado 
$('#closediv').click(function GetOut(e) { 
    e.preventDefault(); 
    $('#mask,#closediv, .window').hide(); 
}); 

function loadContent(idSOS) { 
    $("#dialog").load('/teste' + idSOS + '.aspx'); 
}; 

Это только показывает второй идентификатор загруженного в DIV. Что мне нужно сделать, чтобы загрузить первый идентификатор, загруженный в диалоговом окне DIV, а затем, через 90 секунд, показать второй идентификатор?

Где я ошибся?

Thks people.

+1

Хорошо, что происходит? Что не работает? Вы не описали проблему. – Pointy

+0

Ваша логика кажется в вашей проверке состояния: '(idSOS! = Undefined) && (idSOS! = 'Undefined')'. Может быть, у вас есть причина проверить строгий undefined. Но уверены ли вы, что все условия проходят так, что вызывается кулак .load? – Kai

ответ

0

Я считаю, что это происходит потому, что SetTimeout ожидает первый параметр должен быть строкой, и вы дали ему функцию, которая, вероятно, запущенную сразу

так что код должен быть больше похож:

setTimeout("function() { ... }", 90000); 

однако ваша логика по-прежнему имеет недостатки, так как оператор «each» будет создавать 2 функции setTimeout(), которые будут выполняться одновременно через 90 секунд.

Это потому, что он будет выполнять итерацию по обеим колонкам (ТД) и выполнять все, что есть в каждой из них каждый раз.

Код, скорее всего, нуждается в более детальном пересмотре.

+0

Что делать, если я изменяю каждый для цикла while? – Thiago

+0

, который даст тот же результат ... вы могли бы попытаться определить переменную, которая будет удерживать несколько секунд и увеличивать ее каждый раз, когда вызывается setTimeout ... так например: var time_limit = 90; $ ('...'). each (function() {setTimeout ('...', time_limit); time_limit = time_limit + 90}); –

0

Эта линия очистки диалоговое сразу после его загрузки:

$("#dialog").empty();

Затем, во второй тайм-аут 90, он загружает второй элемент успешно.

+0

Человек .. это не проблема. Если бы это было так, страница будет отображаться, тогда ничего не появится, и до 90 секунд снова отобразится другая страница. Я положил эту строку на тест и забыл удалить. – Thiago

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