【问题标题】:JQuery returns false after return true? [duplicate]jQuery返回true后返回false? [复制]
【发布时间】:2017-02-08 20:58:07
【问题描述】:

我对@9​​87654321@ 中的函数行为有点困惑。问题是 is_airport 函数决定该位置是否是使用机场 JSON 的机场。

一切似乎都正常,JSON 被正确解析等等。正如你所看到的,有一个循环用于检测 destination_id 是否在机场 JSON 键中。它是。 它会提示“OK”,但会返回 false 而不是 true

如果有一个 AJAX 而不是 each 函数,我会因为异步而出现这种行为。但为什么会发生在这里?

function is_airport(destination_id){
    var json_storage = $("#locations-json");
    var airports = JSON.parse(json_storage.attr("data-airports"));
    $.each(airports,function(id,name){
        console.log(id,destination_id,name);
        if (id==destination_id){
            alert('ok');
            return true
        }
    });
    return false
}

$(document).ready(function () {
    console.log(is_airport(5));)}

你知道问题出在哪里吗?

【问题讨论】:

  • 你从$.each循环返回true,而不是从包装函数

标签: javascript jquery json


【解决方案1】:

您从$.each 循环返回true,它充当continue 语句。相反,设置一个标志返回:

function is_airport(destination_id) {
  var json_storage = $("#locations-json");
  var airports = JSON.parse(json_storage.attr("data-airports"));
  var toReturn = true; // flag variable
  $.each(airports, function(id, name) {
    console.log(id, destination_id, name);
    if (id == destination_id) {
      alert('ok');
      return toReturn = false; // break each loop btw...
    }
  });
  return !toReturn; // return !flag
}

【讨论】:

    猜你喜欢
    • 2015-06-22
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 2019-02-08
    • 2011-06-02
    • 2020-07-01
    相关资源
    最近更新 更多