2010-12-28 2 views
1

Hy 얘들.모달 창 동적 내용을로드하고 시간을 변경하십시오

저는 페이지를로드하는 모달 창이 있는데, 90 초 후에 다른 페이지를로드해야합니다. ID가 http://www.test.com/1515 등 .. 나타내는

I 가지고 ...

<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에 따라, 한 페이지를로드 할 것이다. 그리고 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'); 
}; 

그것은 단지 사업부에로드 된 두 번째 ID를 보여주고있다. DIV "대화 상자"에로드 된 첫 번째 ID를로드 한 다음 90 초 후 두 번째 ID를로드하려면 어떻게해야합니까?

어디서 잘못 되었나요?

사람들이 있습니다.

+1

글쎄, 어떻게됩니까? 작동하지 않는 것은 무엇입니까? 문제를 설명하지 않았습니다. – Pointy

+0

귀하의 상태가 귀하의 논리에서 확인되지 않습니다 :'(idSOS! = undefined) && (idSOS! = 'undefined')'. 아마도 당신은 stringified undefined를 검사 할 이유가있을 것입니다. 하지만 모든 조건이 통과되어 주먹 .load가 호출됩니다. – Kai

답변

0

나는에서는 setTimeout은 첫 번째 매개 변수는 문자열이 될 것으로 기대하고 있기 때문에 이런 일이 발생 믿고, 당신은 그것을 아마 그래서 코드가해야 바로

을 실행중인 기능을 주었다 더 같은 :

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

그러나 "each"문은 90 초 후에 동시에 실행되는 두 개의 setTimeout() 함수를 생성하므로 논리에 결함이있는 것으로 보입니다.

이것은 현재 두 열 (TD)을 반복하고 매번 "각"부분에있는 모든 항목을 실행하기 때문입니다.

코드에는 좀 더 자세한 개정이 필요합니다.

+0

"while"루프에 대해 각각을 변경하면 어떻게됩니까? – Thiago

+0

같은 결과를 만들어 낼 수도 있습니다 ... setTimeout이 호출 될 때마다 초를 유지하는 변수를 정의하려고 할 수 있습니다. 예를 들면 다음과 같습니다. var time_limit = 90; $ ('...'). 각 (function() {setTimeout ('...', time_limit); time_limit = time_limit + 90}); –

0

이 줄을로드 한 후 대화 상자 권리를 삭제한다 :

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

그런 다음, 90 초 시간 제한, 그것은 성공적으로 두 번째 항목을로드합니다.

+0

남자 .. 문제가되지 않습니다. 그럴 경우 페이지가 표시되고 아무 것도 나타나지 않고 90 초 전에 다른 페이지가 다시 표시됩니다. 나는이 선을 시험해보고 제거하는 것을 잊었다. – Thiago