0

誰かがリンクをクリックしたときに確認/拒否ボックスをポップアップ表示する方法を見つけようとしています。「OK」をクリックするとある場所に移動し、「キャンセル」をクリックすると別の場所に移動します。私の経験のほとんどはPHPに関するものですが、通常は他のJavaScript関数を使用して機能させることができます...ただし、これを理解することはできません.

これが私のスクリプトです:

function confirmChoice(name, newid){
    answer = confirm("Transfer Ownership of this task to " + name + 
                     "? Press Cancel to decline.")
    if (answer == 1) {
        location = "transfer.php?task=<? echo $taskid; ?>&from=<? echo ownerid; ?>&to=" + newid;
    } elseif (answer==0) {
        location = "decline.php?task=<? echo $taskid; ?>";
    }   
}

どんな助けでも大歓迎です!

編集:さて、提案どおりにコードを変更しました。今は次のとおりです。

function confirmChoice(name, newid){
var answer = confirm("Transfer Ownership of this task to " + name + "? Press Cancel to decline.")
if (answer){
location = "transfer.php?task=<? echo $thistaskid; ?>&from=<? echo $ownerid; ?>&to=" + newid;
}else{
location="decline.php?task=<? echo $thistaskid; ?>";
}   
}

そして、使用されるリンクは次のとおりです。

<a href="#" onclick="confirmChoice(<? echo $requestorname; ?>, <? echo $newid; ?>); return false;"><? echo $requestorname; ?> Requested Ownership</a>

まだ確認ボックスが来ない…

4

2 に答える 2

1

top.locationただの代わりに作るlocation

answer == 1また、比較のために行わないことをお勧めします。

confirmとにかくブール値を返します。やるだけif (answer) {

回避する理由answer == 1は、実行== 1は厳密ではない比較であり、JavaScript がどのように動作するかを認識していないと最終的に噛み付くからです。answer === trueこれも許容される方法です。

もう 1 つの重要な詳細は、これを行うときのことです。

answer = confirm("something here");

answer をグローバル変数として宣言しています。これはひどい慣習であり、避けるべきです。その前に追加するだけvarで修正できます。

var answer = confirm("whatever");

JavaScript 比較の詳細については、https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Comparison_Operators を参照してください。

于 2012-10-04T20:57:24.173 に答える
0

window.open() を使用している場合、目的地の場所を簡単に変更できますが、確認が何を返したかを確認します。

var res = confirm("Do you agree?");

それに応じてトラフィックの方向を決めます

var options = ['http://google.com', 'http://boston.com'];
window.location = options[ res ? 1 : 0 ];
// or
window.open = options[ res ? 1 : 0 ];

フィドルはうまくプレイしたくありませんが、ローカルマシンで動作します。
http://jsfiddle.net/kyleouellette/G9KGm/1/

于 2012-10-04T21:26:43.217 に答える