为什么单击按钮无法获得警报

时间:2018-05-22 14:35:43

标签: javascript jquery

有人可以告诉我为什么在我给定的代码中我无法得到警报?为什么即使点击我的按钮后clicked总是假的?

$(document).ready(function() {
    var clicked = false;
    $(document).on('click', '#submit-catalog', function() {
        var clicked = true;
    });
    if(clicked){ // never get executed
        alert("button clicked")
        //i am executing some function only if that button clicked
    }
});

4 个答案:

答案 0 :(得分:1)

因为您在eventhandler中创建了另一个范围的新变量 删除之前的var,以便在文档就绪函数中设置变量。 此外,您的队列将在触发onclick事件之前处理if。

$(document).ready(function() {
    $(document).on('click', '#submit-catalog', function() {
        alert("button clicked")
    });
});

现在每次按钮触发onclick事件时,它都会显示警告窗口 如果您只想显示警报窗口,请尝试使用

$(document).ready(function() {
    var clicked = false;
    $(document).on('click', '#submit-catalog', function() {
        if(!clicked) {
            clicked = true;
            alert("button clicked")
        }
    });
});

答案 1 :(得分:1)

在进入if - 块之前,JavaScript不会等待执行单击侦听器。

变量在被检查之前永远不会被设置为任何其他值。

@ BraveButter的答案指出你的代码中也有一些语法错误。

如果要在单击元素后发出警报,请使用以下代码:



$(document).ready(function() {
    $(document).on('click', '#submit-catalog', function() {
        alert("button clicked");
    });
});




答案 2 :(得分:0)

问题是您的if语句超出了onClick函数的评估范围,因此,您的if永远不会被评估。 你也在var clicked = true内做function

这里有一个有效的例子:



$(document).ready(function() {
  var clicked = false;
  $(document).on('click', '#submit-catalog', function() {
    clicked = true;
    if (clicked) {
      alert("button clicked")
    }

  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='submit-catalog'> clickme </button>
&#13;
&#13;
&#13;

检查是否更改了clicked的值,一旦您输入document,它就会触发警报。这是因为您输入后会立即评估if

&#13;
&#13;
$(document).ready(function() {
  var clicked = true;
  $(document).on('click', '#submit-catalog', function() {
    //you call this when you click the button.
  });
  if(clicked){ // never get executed
      alert("button clicked")
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

只需取消默认提交操作,设置点击为true并调用一个功能来提醒和提交表单

        $(document).ready(function() {
        var clicked=false;
        $(document).on('click', '#submit-catalog', function(e) {
            e.preventDefault();
            clicked=true;
            click();

        });

        function click(){
            alert("button clicked")
            //submit catalog form
            $('#catalog-form').submit();
        }
    });