Javascript - 在jquery .click()函数中的confirm()

Mec*_*ash 15 javascript jquery confirm function

我有以下内容

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
   confirm('Dialogue');
  }
});
Run Code Online (Sandbox Code Playgroud)

但我想加强确认功能.我已经试过了

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

但是没有生成确认框.我怎么能做到这一点?

epa*_*llo 23

你有一些问题.第一个问题是您使用名称定义变量confirm.不好!将其重命名为isGood或其他内容.

另一个错误就在这里:

if (confirm=true) {
Run Code Online (Sandbox Code Playgroud)

confirm=true 是任务,而不是比较.

它需要

if (confirm==true) {
Run Code Online (Sandbox Code Playgroud)

要不就

if (confirm) {
Run Code Online (Sandbox Code Playgroud)

所以你的代码会是这样的

var bar = "bar";
$("button").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var isGood=confirm('Dialogue');
    if (isGood) {
      alert('true');
    } else {
      alert('false');
    }
  }
});
Run Code Online (Sandbox Code Playgroud)


Fat*_*hra 12

if( !confirm('Are you sure you want to continue?')) {
                    return false;
   }
Run Code Online (Sandbox Code Playgroud)


BNL*_*BNL 5

关于比较的所有注释都是正确的,但是,未显示确认对话框的原因是您正在擦除确认框对象.

更改confirmvar 的名称.

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

http://jsfiddle.net/xjGZj/

相比之下,这个不起作用.

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

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


Den*_*nis 5

当您在函数中的任何位置声明变量时,它会自动"拉"到顶部作为局部变量.当您将confirm作为函数调用时,它首先找到局部变量(尚未定义),并且不会将范围链向上移动到window函数所在的位置.

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

是相同的

$("element").click(function() {
  var foo=bar, confirm = undefined;
  if ( foo == "bar" ) {
  confirm=confirm('Dialogue');
  ...
});
Run Code Online (Sandbox Code Playgroud)

您可以1)重命名您的变量,2)调用window.confirm("Dialog")告诉它您想要全局函数而不是局部变量或3)只需将确认调用放在if中

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