0

外部リンクの確認方法を使用しようとしています。リンクを押すと、サイトを離れたいかどうかを尋ねる質問がポップアップするはずです。どのボタンをクリックしてもサイトを離れることを除いて、すべてが計画どおりに進みます。

function warning(){
  var warning = document.getElementsByClassName("external");
  warning.onclick = confirm('Do you want to leave');

  if(warning){
    alert("Leaving site");

  }
  else{
    return false;
    alert("Staying on site");
  }
}

上記は明らかに機能しません。

4

4 に答える 4

3
warning.onclick = confirm('Do you want to leave');

これはconfirm() すぐに を呼び出し、結果 (true または false) をonclick(無意味です) に代入します。

confirm()代わりに、呼び出して結果を返す無名関数を作成する必要があります。

于 2013-01-22T21:16:17.613 に答える
1

上記は明らかに機能しません

はい。コードには無数のエラーがあります。

  • あなたの変数warningは関数と同じ名前を持っています - これは混乱につながるので悪い習慣です
  • warning.onclickgetElementsByClassNameNodeList を返すため機能しません。リスナーは単一の要素にのみアタッチできます
  • = confirm('Do you want to leave');を呼び出した結果を直接代入しconfirmます。あなたは確かに、イベントが発生したときに呼び出される関数を割り当てたいと思っていました.
  • if(warning)空の NodeList でも true であるため、常に true になります。
  • return false; alert()- アラートは決して実行されません。ステートメントはすぐにreturn関数から飛び出します。

どのようにしますか?

全くない。ユーザーがやりたいこと (リンクをクリックしたときにサイトを離れたい) を妨げるポップアップは望ましくありません。これは非常に悪い UI デザインです。

于 2013-01-22T21:31:05.540 に答える
0

jQueryダイアログは、コードを追加するだけでこれに最適です

warning.onclick = function()
{
 var msg = "do you want to leave this site: ";

 $( "#dialog-confirm" ).html(msg);
 $( "#dialog-confirm" ).dialog({
resizable: false,
title: 'title',
height:300,
modal: true,
buttons: {
    "Ok": function() {
        $( this ).dialog( "close" );
        window.location.href = url;
        },
    "Cancel": function() {
        $( this ).dialog( "close" );
        }
    }
    });
   }
于 2013-01-22T21:23:27.883 に答える
-1

代わりにこれを行います:

var boolOK = confirm('Do you want to leave');

if (boolOK == true)
warning.onclick;

詳細はこちら http://www.javascriptkit.com/javatutors/alert2.shtml

于 2013-01-22T21:22:44.703 に答える