2017-12-19 9 views
-3

5秒カウントダウンでページをリダイレクトしようとしていますが、ユーザーはcountdwnをキャンセルしてページに留まることができます。ここに私のHTMLはカウントダウンとキャンセルオプションを使用してJavascriptでページをリダイレクト

<form name="redirect"> 
<center> 
<font face="Arial"><b>You will be redirected to the script in<br><br> 
<form> 
<input type="text" size="3" name="redirect2"> 
</form> 
seconds</b></font> 
</center> 

。ここではJavaScript

var targetURL="http://javascriptkit.com"; 

var countdownfrom=10; 


var currentsecond=document.redirect.redirect2.value=countdownfrom+1; 
function countredirect(){ 
if (currentsecond!=1){ 
currentsecond-=1; 
document.redirect.redirect2.value=currentsecond; 
} 
else{ 
window.location="WWW.google.com"; 
return; 
} 
setTimeout("countredirect()",1000) 
} 

countredirect(); 

。注:私は実際にポップアップボックスにし、それをやってみたかったキャンセルボタンが

+0

それで、あなたが見つけたその古くて古いコードの問題は何ですか?あなたは問題を解決しようとしましたか? [JavaはJavaScriptではないことに注意してください。それに応じてトピックタグを編集しました。 ]あなたはまだjQueryを持っていません。] –

答えて

-1

あなたはてclearTimeout()

を使用することができます

HTML:

<form name="redirect"> 
<center> 
<font face="Arial"><b>You will be redirected to the script in<br><br> 
<input type="text" size="3" name="redirect2"> 
<input type="button" id="CancelButton" value="Cancel" onclick="javascript:cancelRedirect();" > 
seconds</b></font> 
</center> 
</form> 

JS:

var targetURL="http://javascriptkit.com"; 

var countdownfrom=10; 
var timeoutHandler; 
var currentsecond=document.redirect.redirect2.value=countdownfrom+1; 

function countRedirect(){ 
    if (currentsecond!=1){ 
     currentsecond-=1; 
     document.redirect.redirect2.value=currentsecond; 
    } 
    else{ 
     window.location="http://www.google.com"; 
     return; 
    } 
    timeoutHandler = setTimeout(countRedirect,1000) 
} 

function cancelRedirect(){ 
    clearTimeout(timeoutHandler); 
} 
countRedirect(); 
+0

答えてくれてありがとう、おそらくここでそれがどういうわけかチェックできますか?カウントダウンhttps://jsfiddle.net/#&togetherjs=7BshHSfrj8 –

+0

これをフィダーから今すぐ更新しました。 "countRedirect()"が引用符で囲まれているのが好きなようです。 –

+0

すべてのコードは完全に役に立たない。 1つのタイマーしか設定できません。 –

1

あなたのコードは絶対に不条理です。なぜ毎秒カウントダウンして別のカウントダウンを開始するのですか?あなただけのx秒タイマーを設定し、いつでも好きなときに、それをクリアすることができ、コードのワークフローが完全に不要である:

var countdown = setTimeout(redirect, redirectTime) 

は機能「リダイレクト」を呼び出してタイムアウトを設定した時間「redirectTime」一度経過しています。

あなたは自分のリダイレクト機能を定義する必要があります。

var newLocation = “...” 
function redirect(){ 
    window.location = newLocation 
} 

そして今、あなたはこれでタイマーをクリアすることができます:

ユーザーがボタンをクリックするか、ないものは何でもするときにバインドすることができ
function clearCountdown(){ 
    clearTimeout(countdown) 
} 

あなたは欲しい。

あなたはjQueryのビットを追加した場合:

$(document).ready(function(){ 
    var countdown = setTimeout(redirect, redirectTime) 
} 

そして...

$(“#myButton”).click(clearCountdown) 

注:あなたのコードとワークフローをシンプルに。 DRY(自分自身を繰り返さないでください)と "シンプルがより複雑です"(この最後のものはPythonの哲学のレシピからです:)

+0

私はダウン投票者になぜ彼がダウン投票したかを説明するメモを残しておきたいと思います。私はそれが非常にばかげているので、復讐ではないことを願っています。 –

関連する問題