【问题标题】:Unable to return value in scoped for loop: jQuery无法在作用域 for 循环中返回值:jQuery
【发布时间】:2015-06-01 05:25:28
【问题描述】:

我在 jQuery 中有一个问题,在运行下面的代码时,insert 中的值仍然返回 null。我正在运行 Salesforce 的 Exact Target,并且还有一个 HTML 文档和脚本文档,其中还包含下面的代码 sn-p。

var value = "Subscriptions are: "; var insert = null;

for (var i = 0; i < 10; i++) {
    $("#lol").click(function() {
        if($(this).prop("checked") == true) {
            insert = "LOL";
            return insert;
        }
    })
};
value = value + insert;

在这种情况下,我在精确目标中收到的数据给了我“订阅为:null”。该复选框将被选中,不会给我任何东西。我认为这可能是范围界定问题?

更新:

$("#lol").click(function() {
        if($(this).prop("checked") == true) {
            console.log("lol");
            insert = "LOL";
        }
    });

会产生同样的错误

【问题讨论】:

  • 请注意,当我删除'return insert'行时,我仍然有同样的错误。
  • 这里的for循环有什么用?
  • 那么您的 if 语句必须始终评估为假。检查它是否正确。很可能永远不会达到回报。我希望value = value + insert; 具有不同的功能。对吗?
  • @HomemadeIcing 根本不清楚您要实现的目标。
  • @Musa 其余代码目前在 ExactTarget 上。我正在使用他们的软件为客户创建一个偏好中心。

标签: javascript jquery for-loop exacttarget


【解决方案1】:
$("#lol").on('click', function() {
    if ($(this).prop("checked") == true) {
        insert = "LOL";
    }
    value += insert;

    alert(insert); // Use `insert` here
});
  1. ID 应该是 UNIQUE
  2. 不需要for 绑定事件
  3. 您不能从 event 处理程序返回
  4. event 处理程序中使用insert

【讨论】:

    【解决方案2】:

    当然是null,点击$('#lol')节点会调用click中的函数,不点击不会执行。

    由于代码运行太快到你点击按钮,所以它总是会在你点击$('#lol')之前先运行value = value + insert;

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 2011-11-25
      • 2016-09-03
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 2019-04-24
      • 2016-09-14
      • 1970-01-01
      相关资源
      最近更新 更多