这可能是一个非常基本的问题,但我似乎找不到正确的答案。如何在触发警报之前等待变量更新?我读到我应该使用回调,但有两个函数,所以我不确定当我有一个“全局”警报时如何使用回调。
现在,由于变量未更新,警报被触发为空。
var WaardeStrafblad = ""
var WaardeVerzekering = ""
$('input:checkbox[id=Strafblad]').change(function () {
if ($("#Strafblad").is(":checked")) {
WaardeStrafblad = "Ik heb geen strafblad"
} else {
WaardeStrafblad = ""
}
});
$('input:checkbox[id=Verzekering]').change(function () {
if ($("#Verzekering").is(":checked")) {
WaardeVerzekering = "Ik ben bereid een verzekering af te sluiten"
} else {
WaardeVerzekering = ""
}
});
$("#Strafblad").click(function(){
alert(WaardeStrafblad + " " + WaardeVerzekering);
});
最佳答案
这里没什么东西。首先,最好使用不太复杂的 jQuery 选择器,特别是如果您的元素具有 id
属性。它更快并且不太容易出错,所以我会像这样更改代码:
var WaardeStrafblad = "";
var WaardeVerzekering = "";
$("#Strafblad").change(function() {
if ($("#Strafblad").is(":checked")) {
WaardeStrafblad = "Ik heb geen strafblad";
} else {
WaardeStrafblad = "";
}
});
$("#Verzekering").change(function() {
if ($("#Verzekering").is(":checked")) {
WaardeVerzekering = "Ik ben bereid een verzekering af te sluiten";
} else {
WaardeVerzekering = "";
}
});
$("#Strafblad").click(function() {
alert(WaardeStrafblad + " " + WaardeVerzekering);
});
请注意,我们如何不再检查 input:checkbox
,如果我们已经知道 id
,则无需指定它是 input
类型为复选框
。
失败的原因是更改监听器在单击监听器之后触发,因此只有在选中 Verzekering
后单击 Strafblad
复选框,它才会按预期打印>(或者如果这是您第二次点击 Strafblad
)。
由于点击监听器也会在更改时触发,因此只需删除该监听器并将警报调用添加到 Strafblad
的更改监听器的末尾,如下所示:
var WaardeStrafblad = "";
var WaardeVerzekering = "";
$("#Strafblad").change(function() {
if ($("#Strafblad").is(":checked")) {
WaardeStrafblad = "Ik heb geen strafblad";
} else {
WaardeStrafblad = "";
}
alert(WaardeStrafblad + " " + WaardeVerzekering);
});
$("#Verzekering").change(function() {
if ($("#Verzekering").is(":checked")) {
WaardeVerzekering = "Ik ben bereid een verzekering af te sluiten";
} else {
WaardeVerzekering = "";
}
});
也许它也应该出现在另一个听众的末尾,但不幸的是我不懂这种语言,所以我只会给你一个最小的解决方案:)
关于javascript - jQuery - 在触发警报之前等待变量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44834482/