0

JavaScript関数によるリダイレクトをキャンセルしたい。JavaScript は 5 秒でホームページにリダイレクトし、エラー メッセージとして表示されます。エラーメッセージをマウスでクリックするとリダイレクトがキャンセルされるようにしたい。助けてください。

ここに画像の説明を入力

PHP コード:

<div id="error">    
<?php
    //redirect
    if (isset($_GET['err'])){
        if ($_GET['err'] == 1){
            echo "You are successfully logged out. You will be redirected to the home page in <strong><span id = 'seconds'> 5 </span> </strong> seconds.";
        }elseif($_GET['err'] == 0){
            echo "Your session has been expired. Please login again.!";
        }
    }
?>  
</div>

Javascript:

        <script>
        var seconds = 5;
        var err = <?php echo $_GET['err'] ; ?>;

        if (err == 1){
            setInterval(
            function(){
                if (seconds <= 1) {
                    window.location = 'http://****.***.***.***/***';
                }
                else {
                    document.getElementById('seconds').innerHTML = --seconds;
                }
                },
                1000
            );
        }
    </script>
4

4 に答える 4

3

実際には、setIntervalを停止しようとしています。これは、最初に名前を付けてから、必要な条件でクリアすることで簡単に実行できます。

var redirInt = setInterval(function() {
    // etc.
},5000);

とキャンセルライン…</p>

clearInterval(redirInt);
于 2012-10-05T07:48:58.640 に答える
1
var tId; // create a global var (or put it in a managed scope)
$(function() { // jquery onload
  tId = setInterval(function() { ... },5000); // or use timeout if no counter
  $("#errordiv").on("click",function() { 
    clearInterval(tId); // clear it
 });
});
于 2012-10-05T07:47:03.550 に答える
1

setIntervalを使用してキャンセルできるように、作成したタイマーのIDを返しますclearInterval

次のようなものを使用できます。

var timer;

$(document).ready(function() {
    timer = setInterval(function() {...}, 1000);

    $('#error').click(function() {
        clearInterval(timer);
    });
});
于 2012-10-05T07:49:35.297 に答える
0

これを試して:

<script>

    var seconds = 5;
    var err = <?php echo $_GET['err'] ; ?>;
    var redir = null;

    if (err == 1){

        var redir_interval = setInterval(
        function(){
            if (seconds <= 1) {
                redir = window.location = 'http://****.***.***.***/***';
            }
            else {
                document.getElementById('seconds').innerHTML = --seconds;
            }
            },
            1000
        );
    }

    function cancel_redir() {

        redir = null;
        clearInterval(redir_interval);

    }

</script>

<div id="error" onclick="cancel_redir();">
You are successfully logged out. You will be redirected to the home page in <strong><span id = 'seconds'> 5 </span> </strong> seconds.
</div>
于 2012-10-05T07:49:22.513 に答える