J'essaie d'obtenir le prix total d'une gamme de produits, mais quand je l'essaye, il renvoie simplement NaN, je suis un peu nouveau en JavaScript, donc je le fais peut-être mal

J'ai donc un tableau multidimensionnel dans lequel je conserve les données des produits, puis avec ces données, je crée un tableau pour afficher les données dans le navigateur, mais lorsque j'essaie d'ajouter toutes les données de prix au total, il suffit de dire NaN dans le navigateur, mais je ne le fais pas. comprendre pourquoi parce que j'utilise la méthode parseInt () une idée de pourquoi cela pourrait se produire? Je suis à court d'idées pour résoudre ce problème.

JavaScript:

let carrito = [];
let continuar;
let figura;
let precio;
let cantidad;
let total;
do{
    figura = prompt("Figura de acción:");
    precio =  prompt("Precio:");
    cantidad = prompt("Cantidad:");
    carrito.push([figura, cantidad, precio]);
    continuar = prompt("¿Continuar?");
}while(continuar != "n");
console.log(carrito)
crearTabla()
function crearTabla(){
    let tabla = "<thead><tr><th>Producto</th><th>Cantidad</th><th>Precio</th></tr></thead>"
    for (var i = 0; i < carrito.length; i++) {
        tabla += `<tr><td>${carrito[i][0]}</td><td>${carrito[i][1]}</td><td>${carrito[i][2]}</td></tr>`
        total += parseInt(carrito[i][2]);
        console.log(carrito[i][2]);
    }
    tabla += `<tr><td>---</td><td>Subtotal:</td><td>${total}</td></tr>`
    document.getElementById("factura").innerHTML = tabla;
}

HTML

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Calculadora</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="css/style.css">
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
        <script src="js/app.js" defer></script>
        <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>
    </head>
    <body>
    <div>
        <table id="factura"></table>
        <button type="button" class="btn btn-success" onclick="calcular()">Calcular</button>
    </div>
    </body>
</html>
-1
Serk 28 nov. 2021 à 06:55

1 réponse

Meilleure réponse

Initialisez total en tant que total = 0; - si vous tapez undefined + 1 dans la console des outils de développement du navigateur, il renvoie NaN. Sans initialiser total c'est le résultat.

console.log(undefined + 1);

let total;

console.log('Total: ', total += 1);

let goodTotal = 0;

console.log('Good total: ', goodTotal += 1);
0
Randy Casburn 28 nov. 2021 à 07:05