El cuadro de alerta de Javascript aparece antes de ejecutar la declaración anterior

Tengo un problema extraño, pero no es sorprendente ya que soy un poco novato en JavaScript. Básicamente estoy creando un simple juego de cartas alto-bajo. (Dibuja dos cartas, la carta más alta gana). De todos modos, el código está abajo.

El flujo básico del programa es bastante simple. Elijo 2 números aleatorios (1-52). Estos números se asignan a una tarjeta correspondiente. (es decir, el número 1 es el as de espadas, el número 37 es el gato de los clubes, etc.). De todos modos, después de sacar las tarjetas, el programa debe mostrar la tarjeta correspondiente y determinar el ganador. Al final de todo esto, tengo una alerta que aparece y le dice al ganador del sorteo y le pregunta si el usuario quiere jugar nuevamente.

El problema que tengo es el siguiente: aunque el programa ya debería haber mostrado la imagen de la tarjeta y haber enviado los resultados a un área de texto, el cuadro de alerta aparece antes de que ocurra algo de eso y nunca muestra las tarjetas ni los resultados. ¿Algunas ideas? Estoy publicando todo el código hasta ahora y cualquier ayuda sería apreciada. Gracias por adelantado.

function drawCards() {
    var oppCard = randNumber();
    var customerCard = randNumber();

    while (oppCard == customerCard) {
        customerCard = randNumber();
    }
    var oppCardName = displayCard(oppCard, "oppImage");
    var customerCardName = displayCard(customerCard, "custImage");

    var result2 = "Your card was: " + customerCardName;
    var result1 = "The opponent's card was: " + oppCardName;

    var result3 = determineWinner(oppCard, customerCard);
    var result4 = result3 + '\n' + result1 + '\n' + result2;
    $("#textareaRes").text(result4);

    playAgain(result3);
}

function determineWinner(oppsCard, customersCard) {
    var oppValue = oppsCard % 13;
    var customerValue = oppsCard % 13;

    var winnerString = "";
    if (oppValue == 0) {
        oppValue = 13;
    }
    if (customerValue == 0) {
        customerValue = 13;
    }
    if (oppValue == customerValue) {
        winnerString = "You Tied.";
    }
    else if (oppValue > customerValue) {
        winnerString = "You Lose.";
    }
    else if (oppValue < customerValue) {
        winnerString = "You Win!!";
    }
    return winnerString;
}

function randNumber() {
    var min = 1;
    var max = 52;
    var random = Math.floor(Math.random() * (max - min + 1)) + min;
    return random;
}

function playAgain(resultString) {
    if (resultString == "You Lose." || resultString == "You Win!!") {
        alert(resultString);
        var conf = confirm("Play Again?");
        if (conf == true) {
            $("#textareaRes").text("");
            document.getElementById("custImage").src="./cardImages/default.png";
            document.getElementById("oppImage").src="./cardImages/default.png";
        }
        else {
            window.location = "#mainMenuPage";
        }
    }
    else {
        alert(resultString);
        alert("Try Again.");
        $("#textareaRes").text("");
        document.getElementById("custImage").src="./cardImages/default.png";
        document.getElementById("oppImage").src="./cardImages/default.png";
    }
}

Así que no coloqué el código aquí para la función de la tarjeta de visualización, solo porque para la prueba es excepcionalmente largo Es solo un caso de cambio gigante para los 52 números aleatorios. El producto terminado se extraerá de un archivo XML, pero lo utilicé solo para realizar pruebas. (Si, por alguna razón, necesita ver la función de mostrar tarjetas, hágamelo saber y puedo publicarlo). De todos modos, para recapitular, la última llamada realizada en la función drawCards () es la función playAgain. Al ejecutar este código, no se muestran los resultados ni las imágenes de la tarjeta. Simplemente salta directamente a la alerta que requiere la función playAgain. Esta es probablemente una pregunta bastante noble, pero estoy un poco perplejo por ello. Así que cualquier ayuda que ustedes puedan ofrecer sería muy apreciada. Gracias.

[EDIT: En realidad funciona correctamente en el navegador de una computadora. Sin embargo, el problema ocurre en un dispositivo móvil como un teléfono o tableta. Así que esto es probablemente algo que estoy haciendo incorrectamente aquí. Cualquier ayuda es muy apreciada.]

Respuestas a la pregunta(3)

Su respuesta a la pregunta