JavaScript - Añadir objeto sin duplicarlo y removar un fragmento del identificador

 
Vista:
sin imagen de perfil
Val: 10
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Añadir objeto sin duplicarlo y removar un fragmento del identificador

Publicado por Cristian (6 intervenciones) el 23/11/2019 17:43:07
Buenas tardes, actualmente estoy haciendo varias pruebas con javascript en las que me gustaría añadir un objeto a la cesta sin duplicarlo solo aumentando su cantidad y por otro lado cuando le de al botón de eliminar que este se vaya, en teoría en base al código lo tengo hecho pero no me funciona, además por otro lado, tengo un problema el cual a la hora de mostrar los elementos tanto cuando genero la tabla como cuando añado un producto, me sale undefined cosa que no entiendo muy bien.

Os adjunto el código por si podéis echarme una mano y ver cual es el error ya que no doy con la solución a este:

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
var p1 =
{
	codigo: 91283,
	nombre: "Placa base Gigabyte GA-H110M-S2H",
	precio: "42,14",
};
 
 
 
var p2 =
{
	codigo: 128275,
	nombre: "Disco duro Kingston A400 SSD 480GB",
	precio: "69,12",
};
 
 
 
var p3 =
{
	codigo: 100309,
	nombre: "Memoria RAM Corsair Vengeance LPX DDR4 3000 PC4 24000 16GB 2x8GB CL15",
	precio: "45,45",
};
 
 
window.onload = listadoDeProductos;
// Array de productos
 
var productos = [p1,p2,p3];
 
// Cesta vacía
 
var cesta = [];
 
// Cargando productos cuando abres la pagina.
 
function listadoDeProductos(){
	var generadordeproductos;
		generadordeproductos += '<tr>\
									<td>\
										'+productos[0].codigo+
									'</td>\
									<td>\
										'+productos[0].nombre+
									'</td>\
									<td>\
										'+productos[0].precio+
									'</td>\
									<td>\
										<input type="text" size="1" name="cantidad" id="cantidadplaca">\
									</td>\
									<td>\
										<button onclick="insertarEnLaCesta1()">Añadir a la cesta</button>\
									</td>\
								</tr>';
	document.getElementById('productos').innerHTML += '<table>\
															<td>\
																Cd. Producto\
															</td>\
															<td>\
																Descripción\
															</td>\
															<td>\
																Precio\
															</td>\
															<td>\
																Cantidad\
															</td>\
														</tr>\
	'+generadordeproductos;
}
 
function insertarEnLaCesta1(){
 
	var insertandoenlacesta = cesta.push(productos);
	var cantidad = document.getElementById('cantidadplaca').value;
	var productoplaca;
 
	if (typeof true === productoplaca){
		cantidad += cantidad + cantidad;
	}
	else
	{
		cantidad = cantidad;
	}
	productoplaca += '<tr>\
						<td>\
							'+productos[0].codigo+
						'</td>\
						<td>\
							'+productos[0].nombre+
						'</td>\
						<td>\
							'+cantidad+
						'</td>\
						<td>\
						</td>\
						<td>\
							<button onclick="eliminarDeLaCesta()">Eliminar</button>\
						</td>\
					</tr>';
	document.getElementById('cesta').innerHTML += productoplaca;
	eliminarDeLaCesta();
}
 
function eliminarDeLaCesta(){
	document.getElementById('cesta').removeChild(productoplaca.lastChild);
 
 
}

Y por aquí el codigo 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
<!DOCTYPE html>
<html>
<head>
	<title>UT04</title>
	<meta charset="utf-8">
	<link rel="stylesheet" type="text/css" href="css/hoja.css">
 
</head>
<body>
<!-- ///////////// Scripts \\\\\\\\\\\\\ -->
<script type="text/javascript" src="js/javascript.js"></script>
<div id="container">
	<div id="productos">
	</div>
 
	<div id="cesta">
 
	</div>
</div>
 
 
 
 
 
 
</body>
</html>

Espero vuestra respuesta :)
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
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Añadir objeto sin duplicarlo y removar un fragmento del identificador

Publicado por Alejandro (532 intervenciones) el 23/11/2019 18:56:36
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Lina 39 declaras
1
var generadordeproductos;
poro no la inicializas, entonces es una variable indefinida (Undefined)
En la linea 40 concatenas al contenido de la variable "indefinida" el <tr>

Solo inicializala con cadena vacía para solucionarlo.
1
var generadordeproductos='';

Sobre no duplicar pues... tienes que primero revisar que no exista luego agregarlo o actualizarlo según sea el caso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 10
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Añadir objeto sin duplicarlo y removar un fragmento del identificador

Publicado por Cristian (6 intervenciones) el 23/11/2019 19:41:20
Muchas gracias por la explicacion de la primera parte, ha quedado resuelta, ahora me pongo con la otra y veo como intentar resolver :)
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
sin imagen de perfil
Val: 10
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Añadir objeto sin duplicarlo y removar un fragmento del identificador

Publicado por Cristian (6 intervenciones) el 24/11/2019 13:12:28
Ahora mismo la tengo así he probado con el operador typeof pero no me permite incluso lo he metido en un for para ver si "solucionaba el problema de duplicidad" pero logicamente cada vez que le de clic al boton esta va a generar otra nueva por lo que no es optimo.

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
function insertarEnLaCesta1(){
 
	var insertandoenlacesta = cesta.push(productos);
	var cantidad = document.getElementById('cantidadplaca').value;
	var productoplaca = "";
 
	for (var p = 0; p < productoplaca; p++){
		if(typeof cantidad == "undefined"){
			cantidad;
		}
		else{
 
		}
	}
 
 
	for (var a = 0; a < 1; a++){
		productoplaca += '<tr>\
							<td>\
								'+productos[0].codigo+
							'</td>\
							<td>\
								'+productos[0].nombre+
							'</td>\
							<td>\
								'+cantidad+
							'</td>\
							<td>\
							</td>\
							<td>\
								<button onclick="eliminarDeLaCesta()">Eliminar</button>\
							</td>\
						</tr>';
	}
 
	document.getElementById('cesta').innerHTML += productoplaca;
	eliminarDeLaCesta();
}
 
function eliminarDeLaCesta(){
	document.getElementById('cesta').removeChild(productoplaca.lastChild);
 
 
}
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