有人可以告诉我为什么在我给定的代码中我无法得到警报?为什么即使点击我的按钮后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
}
});
答案 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;
检查是否更改了clicked
的值,一旦您输入document
,它就会触发警报。这是因为您输入后会立即评估if
。
$(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;
答案 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();
}
});