JavaScript - Carrito de compra -javascript ayudaa!!

 
Vista:
sin imagen de perfil

Carrito de compra -javascript ayudaa!!

Publicado por azdine (1 intervención) el 17/10/2014 15:34:36
Buenas,
Soy nuevo en esto, estoy haciendo un carrito de compra, pero no consigo que me funcione el boton de añadir un producto a la cesta o eliminarlo de la misma.
Este es mi codigo Javascript y el html tambien para que lo vean. Gracias!!


Javascript:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var horaActual
var arrayProductos;
var fech = new Date();
var horaApertura = ("08:00:00");
var horaCierre = "22:00:00";
var estadoTienda;
var cantidad=1;
function hora(){
 
    var fecha = new Date();
 
    horaActual=document.getElementById("horaActual");
    horaActual.innerHTML= fecha.toLocaleTimeString();
 
    horaActual.innerHTML+=" <tr><td>Hora apertura :"+horaApertura+"</td> </tr><tr><td> Hora de cierre: "+horaCierre+"</td><td>Estaddo de la tienda : "+estadoTienda+"</td></tr><td> </td></tr>";
 
    setTimeout('hora()',1000);
 
}
 
function inicio(){
    estadoTienda();
    hora();
    producto();
}
function estadoTienda(){
    if(fech.toLocaleTimeString()>horaApertura&&fech.toLocaleTimeString()<horaCierre){
        estadoTienda="Abierta";
    }else{
        estadoTienda="Cerrada";
    }
 
}
 
function Producto(idProducto, nombreProducto, stock, precio){
    this.idProducto= idProducto;
    this.nombreProducto = nombreProducto;
    this.stock = stock;
    this.precio = precio;
 
}
 
function producto(){
    var fifa15 = new Producto("0", "Fifa15", 2, 50);
    var callDuty = new Producto("1","Call Of Duty",5,64)
    var prototype3 = new Producto("2","Prototype3",4,15)
    var assesinsCreed = new Producto("3","Assessins Creed Rogue",2,69)
    var farCry4 = new Producto("4","FARCRY4",10,24)
    arrayProductos = [fifa15, callDuty, prototype3, assesinsCreed, farCry4];
   for (i = 0; i < arrayProductos.length; i++) {
         document.getElementById("tablaProductos").innerHTML+="<tr><td>"+arrayProductos[i].nombreProducto+"</td> <td>"+arrayProductos[i].stock+"</td> <td>"+arrayProductos[i].precio+"</td><td><input type='button' onclick='anadir("+i+")'  size='50' name='btnAnadir'></input></td></tr>";
 
    }
 
}
 
function anadir(i){
if(estadoTienda=="Abierta"){
    var arrayCesta;
    arrayCesta=[i];
 
    for (p = 0; p < arrayCesta.length; p++) {
          document.getElementById("prueba").innerHTML+=arrayCesta[p];
 
        arrayProductos[i].stock=arrayProductos[i].stock-1;
        document.getElementById("cesta").innerHTML+="<tr><td>"+arrayProductos[i].nombreProducto+"</td> <td id='stock'>"+arrayProductos[i].stock+"</td> <td>"+arrayProductos[i].precio+"</td><td><input type='button' onclick=quitarDeCesta("+i+")'  size='50' value='Eliminar'></input></td></tr>";
 
    }
    }else{
        alert("No puedes comprar ahora, la tienda está cerrada");
 
    }
}
function quitarDeCesta(i){
            document.getElementById("cesta").innerHTML+="";
 
}





HTML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<html>
    <head>
        <title></title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
 
        <script type="text/javascript" src="javascript.js"></script>
        <link rel="stylesheet" href="estilos.css" type="text/css" title="actual" />
    </head>
    <body onload="inicio()">
        <div class="headBar">
            <img src="images.jpeg" align="center">
        </div>
        <div class ="horaActual">
 
            <table id="horaActual">
 
            </table>
 
        </div>
        <div id="products" class="productos">
 
                        <table id="tablaProductos"  class="tabla">
                            <tr>
                                <td>Producto</td>
                                <td>Cantidad</td>
                                <td>Precio</td>
                                <td class="anadirC"></td>
 
                            </tr>
                        </table>
 
            <table align="center" border="2" id="cesta" class="cesta">
                <tr>
                    <td>Producto</td>
                    <td>Cantidad cesta</td>
                    <td>Precio unitario</td>
                    <td>Precio total</td>
                    <td></td>
 
                </tr>
            </table>
            <div id="prueba"></div>
 
        </div>
 
 
    </body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 5
Ha disminuido su posición en 29 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Carrito de compra -javascript ayudaa!!

Publicado por Ismael (10 intervenciones) el 13/11/2014 13:23:36
Hola, he estado mirando lo que te sucede,
añadir artículos a mi si me ha dejado y lo de borrar no lo tienes terminado a parte de algunos pequeños cambios que hay que hacer para que funcione.
De todas formas, si es para hacer pruebas y practicar el javascript lo veo bien, pero para implantar una página web de compras de verdad no te lo recomiendo ya que es completamente maleable todo lo que sea de parte del usuario (navegador)

en el javascript:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
var horaActual
 var arrayProductos;
 var fech = new Date();
 var horaApertura = ("08:00:00");
 var horaCierre = "22:00:00";
 var estadoTienda;
 var cantidad=1;
 var arrayCesta=[];
 function hora(){
 
     var fecha = new Date();
 
     horaActual=document.getElementById("horaActual");
     horaActual.innerHTML= fecha.toLocaleTimeString();
 
     horaActual.innerHTML+=" <tr><td>Hora apertura :"+horaApertura+"</td> </tr><tr><td> Hora de cierre: "+horaCierre+"</td><td>Estaddo de la tienda : "+estadoTienda+"</td></tr><td> </td></tr>";
 
     setTimeout('hora()',1000);
 
 }
 
 function inicio(){
     estadoTienda();
     hora();
     producto();
 }
 function estadoTienda(){
     if(fech.toLocaleTimeString()>horaApertura&&fech.toLocaleTimeString()<horaCierre){
         estadoTienda="Abierta";
     }else{
         estadoTienda="Cerrada";
     }
 }
 
 function Producto(idProducto, nombreProducto, stock, precio){
     this.idProducto= idProducto;
     this.nombreProducto = nombreProducto;
     this.stock = stock;
     this.precio = precio;
 
 }
 
 function producto(){
     var fifa15 = new Producto("0", "Fifa15", 2, 50);
     var callDuty = new Producto("1","Call Of Duty",5,64)
     var prototype3 = new Producto("2","Prototype3",4,15)
     var assesinsCreed = new Producto("3","Assessins Creed Rogue",2,69)
     var farCry4 = new Producto("4","FARCRY4",10,24)
     arrayProductos = [fifa15, callDuty, prototype3, assesinsCreed, farCry4];
    for (i = 0; i < arrayProductos.length; i++) {
          document.getElementById("tablaProductos").innerHTML+="<tr><td>"+arrayProductos[i].nombreProducto+"</td> <td>"+arrayProductos[i].stock+"</td> <td>"+arrayProductos[i].precio+"</td><td><input type='button' onclick='anadir("+i+")'  size='50' name='btnAnadir'></input></td></tr>";
 
     }
 
 }
 
 function anadir(i){
 if(estadoTienda=="Abierta"){
     arrayCesta.push(i);
     acumulador="<tr><td>Producto</td><td>Cantidad cesta</td><td>Precio unitario</td><td>Precio total</td><td></td></tr>";
     for (var p = 0; p < arrayCesta.length; p++) {
           document.getElementById("prueba").innerHTML+=arrayCesta[p];
 
         arrayProductos[i].stock=arrayProductos[i].stock-1;
         acumulador+="<tr id='lin_"+p+"'><td>"+arrayProductos[arrayCesta[p]].nombreProducto+"</td> <td id='stock'>"+arrayProductos[arrayCesta[p]].stock+"</td> <td>"+arrayProductos[arrayCesta[p]].precio+"</td><td><input type='button' onclick='quitarDeCesta("+p+");'  size='50' value='Eliminar'></td></tr>";
     }
     document.getElementById("cesta").innerHTML=acumulador;
     }else{
         alert("No puedes comprar ahora, la tienda está cerrada");
 
     }
 }
 function quitarDeCesta(i){
	 arrayCesta.splice(i, 1);//borramos del array el elemento
	 var quita_p_cesta= document.getElementById("lin_"+i);
	 quita_p_cesta.parentNode.removeChild(quita_p_cesta);
 
 }

Te explico un poco:

Tienes que inicializar el arrayCesta al principio;
De la forma que lo tenias en el añadir machacaba el array y siempre tenia uno solo, el nuevo que metia, aunque no se podía ver pq tenias el innerHTML que le iba sumando una línea nueva que era la del nuevo producto.
Como el planteamiento no era el adecuado también hay que cambiar la forma en que llamamos para mostrar los artículos de la cesta.
con: arrayCesta.push(i); le metemos un nuevo item en el array.
Tb se le ha puesto un Id al tr mas un secuencial, para que a la hora de quitarlo de la cesta lo tengamos mas fácil.

En lo de quitar de la cesta te faltaba
quitar el item del array con: arrayCesta.splice(i, 1);//borramos del array el elemento
y con DOM quitamos el elemento del HTML.

Lo probé y funciona bien, aunque hay cosas que tendras que arreglar, la suma de precios, etc....

Espero que te sirva.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar