-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproductoController.js
77 lines (65 loc) · 1.95 KB
/
productoController.js
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
/**
* Lanza una petición a la api para obtener los datos de un producto dado su id
* @param {Number} id
*/
function requestProductoSeleccionado(id) {
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = respuestaProducto;
httpRequest.open("GET", 'https://fakestoreapi.com/products/'+id);
httpRequest.send();
}
/**
* Recibe la respuesta del producto buscado por la api y llama al método para mostrarlo
* @see mostrarProducto
*/
function respuestaProducto() {
if (httpRequest.readyState === XMLHttpRequest.DONE) {
if (httpRequest.status === 200) {
var datos = JSON.parse(httpRequest.responseText);
mostrarProducto(datos);
} else {
alert("There was a problem with the request.");
}
}
}
/**
* Coloca un producto en el html
* @param {JSON} item
* @see respuestaProducto
*/
function mostrarProducto(item){
let main = $("main");
main.empty();
/*Sección*/
let container = $("<section>")
.addClass("detalle")
.appendTo(main);
let images = $("<div>")
.addClass("detalle-images")
.appendTo(container);
let img = $('<img>')
.attr("src", item.image)
.appendTo(images);
let info = $("<div>")
.addClass("info")
.appendTo(container);
let nomb = $('<h1>' + item.title + '</h1>')
.appendTo(info);
let preci = $('<h2>' + item.price + '</h2>')
.appendTo(info);
let desc = $('<p>' + item.description + '</p>')
.appendTo(info);
let arr = [
{ val: "xs", text: 'XS' },
{ val: "s", text: 'S' },
{ val: "m", text: 'M' },
{ val: "l", text: 'L' },
{ val: "xl", text: 'XL' }
];
let selec = $('<select>').appendTo(info);
$(arr).each(function () {
selec.append($("<option>").attr('value', this.val).text(this.text));
});
let add = $('<button> Añadir al carrito </button>')
.appendTo(info);
}