Creo que estoy publicando todo el código relevante aquí.

La función definitivamente se ejecuta porque si cambio el > a <, me da la alerta cuando hago clic en el botón 'moveup'.
Además, la consola registra que pic2 continúa creciendo con cada incremento y pic3 permanece igual. Entonces esa parte está funcionando.

Algo en la función simplemente no compara las dos variables correctamente y no puedo averiguar qué está mal.

var player = document.getElementById("pic2").offsetLeft;
var finish = document.getElementById("pic3").offsetLeft;

console.log(player);
console.log(finish);

function youWin() {
  if (player >= finish) {
    alert("You Win!");
  } else {

  }
};

$(function() {
  $('#moveup').click(function() {
    $("#pic2").css('margin-left', '+=2vw');
    $("#pic3").css('margin-left', '-=2vw');
    document.getElementById("guessField").value = "";
    $('#myModalTrue').toggle();
    y = regenerate();
    var player = document.getElementById("pic2").offsetLeft;
    var finish = document.getElementById("pic3").offsetLeft;
    console.log(player);
    console.log(finish);
    youWin();
  });
});
0
Justin Paoletta 16 oct. 2018 a las 20:55

2 respuestas

La mejor respuesta

No está cambiando la variable global player y finish. está haciendo nuevos locales. para obtener más información sobre ámbito de la variable en javascript. prueba esto

var player = document.getElementById("pic2").offsetLeft;
var finish = document.getElementById("pic3").offsetLeft;

console.log(player);
console.log(finish);

function youWin() {
  if (player >= finish) {
    alert("You Win!");
  } else {

  }
};
$(function() {
  $('#moveup').click(function() {
    $("#pic2").css('margin-left', '+=2vw');
    $("#pic3").css('margin-left', '-=2vw');
    document.getElementById("guessField").value = "";
    $('#myModalTrue').toggle();
    y = regenerate();
    player = document.getElementById("pic2").offsetLeft;//change is here
    finish = document.getElementById("pic3").offsetLeft;//and here
    console.log(player);
    console.log(finish);
    youWin();
  });
});
1
evgeni fotia 16 oct. 2018 a las 18:06

Intente registrar valores dentro de la función youWin, debería devolver valores antiguos y su respuesta. Sus valores player y finish no se actualizan para funcionar. Todavía está adquiriendo valores antiguos.

function youWin(player, finish) {
  if (player >= finish) {
    alert("You Win!");
  } else {

  }
};

$(function() {
  $('#moveup').click(function() {
    $("#pic2").css('margin-left', '+=2vw');
    $("#pic3").css('margin-left', '-=2vw');
    document.getElementById("guessField").value = "";
    $('#myModalTrue').toggle();
    y = regenerate();
    var player = document.getElementById("pic2").offsetLeft;
    var finish = document.getElementById("pic3").offsetLeft;
    console.log(player);
    console.log(finish);
    youWin(player, finish);
  });
});
0
Sandip Nirmal 16 oct. 2018 a las 18:05