javascript - jQuery - 在触发警报之前等待变量更新

标签 javascript jquery

这可能是一个非常基本的问题,但我似乎找不到正确的答案。如何在触发警报之前等待变量更新?我读到我应该使用回调,但有两个函数,所以我不确定当我有一个“全局”警报时如何使用回调。

现在,由于变量未更新,警报被触发为空。

  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 = "";
  }
});

也许它也应该出现在另一个听众的末尾,但不幸的是我不懂这种语言,所以我只会给你一个最小的解决方案:)

Here is a working example

关于javascript - jQuery - 在触发警报之前等待变量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44834482/

相关文章:

javascript - jQuery:使用单个 Ajax 调用,接收渐进状态而不是单个响应?

javascript - 开始日期和结束日期验证

jQuery mobile - 带和不带视网膜显示的图像尺寸

javascript - 在 Javascript 事件 DOM 中禁用函数

jquery - 如何检查是否读取了通过 socket-io 发送的消息?

javascript - 激活 asp 验证器时禁用阻止 ui

javascript - 如何使用javascript绘制建筑物一层的平面图

javascript - 如何在div的特定x和y位置触发点击事件?

javascript - 如何从内部对象访问外部对象的属性?

javascript - 如何根据表单数据重定向操作 ="phpmailer.php"?