if循环执行后,Javascript else循环执行

时间:2018-04-11 00:18:40

标签: javascript jquery html

我有一个带有API的index.js文件,它将gameData模型上传到mongoDB:`

var gameValue = require('../models/gameValues');

router.post('/add_game_to_dB', function(req, res, next) {
    newGame = new gameValue(req.body);
    newGame.save(function (err, game) {
        if (err)
            throw err;

        res.json({
            "id": game._id
        });
    });
});

然后我有一个.js文件,如果点击了按钮id并将游戏上传到数据库,则会检测到该文件:

$("#upVoteBattlefieldOne").click(function(event) {
  console.log(event.target.name);
  var newGameName = $("#BattlefieldOne .panel-heading").text();
  newGameToDatabase(newGameName);
});

$("#upVoteBatmanTheEnemyWithin").click(function(event) {
  console.log(event.target.name);
  var newGameName = $("#BatmanTheEnemyWithin .panel-heading").text();
  newGameToDatabase(newGameName);
});

function newGameToDatabase(name) {
  $.get("/get_gameValues", function(data) {
    if (data.length == 0) {
      $.post("/add_game_to_dB", {
        gameName: name
      }, function(result) {
        alert("Upvoted " + name);
      });
    }
    for (var i = 0; i < data.length; i++) {
      if (name === data[i].gameName) {
        alert("game is in database already");
        return;
      } else {
        $.post("/add_game_to_dB", {
          gameName: name
        }, function(result) {
          alert("Upvoted " + name);
        });
      }
    }
  });
}

javascript似乎适用于我点击的第一个游戏。例如,如果我单击battlefield one,它会将其添加到数据库(如果尚未存在)。在战场上一个人在数据库上之后,它检测到具有“战地一号”的名称属性的文件在数据库上并且警告用户该游戏已经在数据库中。一旦我点击另一个游戏,即蝙蝠侠敌人,它将其他游戏添加到数据库,如果它还没有。如果我点击按钮将该游戏(将敌人蝙蝠侠)再次添加到数据库中,它会确认游戏在数据库上,但随后又将游戏添加到数据库中。它在第23行执行if循环,并且还执行else循环。如果if循环条件得到满足,我试图包含一个return语句退出函数,但似乎忽略了这个return语句并执行了那个else循环。如果我点击蝙蝠侠,反之亦然,那么战场就有这个问题。我是节点js和javascript的新手,所以我可能犯了一个愚蠢的错误,但我已经看了很长时间了,我似乎无法弄清楚

1 个答案:

答案 0 :(得分:2)

我猜你应该使用变量标记现有状态并使用break in循环。

function newGameToDatabase(name) {
  $.get("/get_gameValues", function(data) {
    var alreadyExist = false;

    for (var i = 0; i < data.length; i++) {
      if (name === data[i].gameName) {
        alert("game is in database already");
        alreadyExist = true;
        break;
      }
    }

    if (!alreadyExist) {
      $.post("/add_game_to_dB", {
        gameName: name
      }, function(result) {
        alert("Upvoted " + name);
      });
    }
  });
}