2010-12-28 11 views
1

Hy男。モーダルウィンドウ動的コンテンツを読み込んで時間を変更する

私はページをロードするモーダルウィンドウを持っているので、90秒後に別のページをロードする必要があります。 idはhttp://www.test.com/1515のような..表していること

私が持っている...

<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秒後にもう一方のIDをロードする必要があります... http://www.test.com/2015

今、私はそれが唯一のdivにロードされた第2のIDを示し、このスクリプト...

$(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の「ダイアログ」にロードされた最初のIDをロードしてから90秒後に2番目のIDを表示するにはどうすればよいですか?

どこが間違っていましたか?

Thksの人々。

+1

さて、どうしますか?何がうまくいかない?あなたは問題を記述していません。 – Pointy

+0

あなたの状態はあなたの状態では、 '(idSOS!= undefined)&&(idSOS!= 'undefined')'のように見えます。たぶん、文字列化された未定義をチェックする理由があります。しかし、すべての条件が合格しているので、第1ロードが呼び出されますか? – Kai

答えて

0

ので、コードをよりようにする必要があり、私はsetTimeoutを最初のパラメータが文字列であることを期待しているため、この問題が発生したと考えている、とあなたはすぐにそれを

をおそらく実行されている機能を、与えた:

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

しかし、 "each"ステートメントは90秒後に同時に実行される2つのsetTimeout()関数を作成するため、ロジックには脆弱性が残っています。

これは、現在の両方の列(TD)に対して繰り返し処理を行い、毎回「each」部分にあるすべてを実行するためです。

コードには、おそらくより詳細なリビジョンが必要です。

+0

"while"ループでそれぞれを変更するとどうなりますか? – Thiago

+0

と同じ結果が得られるかもしれません...あなたはsetTimeoutが呼び出されるたびに秒数を保持する変数を定義しようとする可能性があります。例えばvar time_limit = 90; $( '...')。それぞれ(function(){setTimeout( '...'、time_limit); time_limit = time_limit + 90}); –

0

この行は、それをロードした後、ダイアログ右側をクリアされます。

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

はその後、90秒のタイムアウトでは、それが成功した2番目の項目をロードします。

+0

男。それは問題ではありません。そうであれば、ページが表示され、何も表示されず、90秒前に別のページが再び表示されます。私はこの行にテストを行い、削除するのを忘れてしまった。 – Thiago

関連する問題