web-dev-qa-db-ja.com

JavaScript-jquery .click()関数内のconfirm()

私は以下を持っています

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
   confirm('Dialogue');
  }
});

しかし、確認機能をブール化したいと思います。私はすでに試しました

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var confirm=confirm('Dialogue');
    if (confirm==true) {
      alert('true');
    } else {
      alert('false');
    }
  }
});

ただし、確認ボックスは生成されません。どうすればこれを達成できますか?

16
Mechaflash

いくつか問題があります。最初の問題は、confirmという名前の変数を定義していることです。良くない!名前をisGoodなどに変更します。

他のバグはここにあります:

if (confirm=true) {

confirm=trueは代入であり、比較ではありません。

それはする必要があります

if (confirm==true) {

あるいは単に

if (confirm) {

したがって、コードは次のようになります

var bar = "bar";
$("button").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var isGood=confirm('Dialogue');
    if (isGood) {
      alert('true');
    } else {
      alert('false');
    }
  }
});
23
epascarello
if( !confirm('Are you sure you want to continue?')) {
                    return false;
   }
13
Fatima Zohra

関数内の任意の場所で変数を宣言すると、ローカル変数として自動的に「プル」されます。関数としてconfirmを呼び出すと、ローカル変数(まだ定義されていない)が最初に検出され、関数が存在するwindowまでスコープチェーンが上に移動しません。

_$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var confirm=confirm('Dialogue');
    if (confirm==true) {
      alert('true');
    } else {
      alert('false');
    }
  }
});
_

と同じです

_$("element").click(function() {
  var foo=bar, confirm = undefined;
  if ( foo == "bar" ) {
  confirm=confirm('Dialogue');
  ...
});
_

1)変数の名前を変更する、2)window.confirm("Dialog")を呼び出して、ローカル変数の代わりにグローバル関数が必要であることを伝えるか、3)確認の呼び出しをif内に置く

_$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    if (confirm('Dialogue')) {
      alert('true');
    } else {
      alert('false');
    }
  }
});
_
6
Dennis

比較に関するコメントはすべて正しいですが、確認ダイアログが表示されないのは、確認ボックスオブジェクトを消去しているためです。

confirm varの名前を変更します。

$(element).click(function() {
  var confirm1 = confirm('Dialogue');
  if (confirm1) {
    alert('true');
  } else {
    alert('false');
  }  
});

http://jsfiddle.net/xjGZj/

これを、機能しないこの1つと比較してください。

$(element).click(function() {
  var confirm = confirm('Dialogue');
  if (confirm) {
    alert('true');
  } else {
    alert('false');
  }
});

http://jsfiddle.net/xjGZj/1/

5
BNL

試す

if (confirm) {
      alert('true');
    } else {
      alert('false');
    }
1
Rafay

私の最初の問題はあなたの主な問題です

var foo=bar;
  if ( foo == "bar" ) {

バーとは?次の割り当てを行うつもりだったと思いますvar foo="bar";これにより、ifステートメントがtrueと評価され、確認ダイアログが実行されます。

さらに、以下は不正確です

var confirm = confirm("dialog");
if (confirm=true)

これを使うだけです:

if (confirm("dialog"))
0
John Hartsock

追加 .confirmクラスを要素に設定し、jQueryで書き込みます。

$('.confirm').click(function() {

    return confirm("Are you sure?");

});
0
Salam