Wie aus dem folgenden Code ersichtlich ist, erzeuge ich mit Hilfe der Vorlage in var sProductTemplate
dynamisch Thumbnails. Die Thumbnails werden über eine Ajax-Anfrage gefüllt, die die Informationen aus einer JSON-Datei bezieht.Vergleichen von alten und neuen Preisen in einem Bootstrap-Thumbnail?
Meine Aufgabe ist es, den aktuellen Preis im Thumbnail mit dem aktualisierten Preis im JSON zu vergleichen (falls vorhanden) und einen grünen Pfeil im Thumbnail anzuzeigen, wenn der neue Preis höher als der alte ist. Wenn der neue Preis niedriger als der alte ist, muss ich einen roten Pfeil anzeigen.
Mein Problem ist, dass ich nicht wirklich zu diesem Punkt kommen kann, da ich nicht herausfinden kann, wie man den alten Preis speichert und dann mit dem neuen Preis für jedes Thumbnail vergleicht.
Da jede Miniatur eine eindeutige ID hat den i diesen Code geschrieben habe, den Preis von dem dom durch die Miniaturansicht des ids zu bekommen:
var sPriceInDom = Number($("#product-id-"+sProductId+" .product-price").text());
Aber natürlich, das gibt mir den letzten Preis und ich kann es nicht wirklich mit dem alten Preis vergleichen, da es durch den neuen Preis ersetzt wird.
Wenn ich diesen Code direkt nach der Ajax-Anfrage, dann gibt es mir nur Nullen, da das Thumbnail dynamisch generiert wird und es zuerst ausgefüllt werden muss.
Hat jemand eine Idee wie kann ich den alten Preis behalten und ihn mit dem zuletzt aktualisierten vergleichen, damit ich den Unterschied berechnen kann?
Hier ist alles neccesary Code:
var sProductTemplate = '<div class="col-sm-6 col-md-3"> \
<div class="thumbnail"> \
<div id="product-id-{{product-id}}" class="product"> \
<img class="imgProduct" src="{{product-icon}}" alt="idiot forgot icon"> \
<div class="caption"> \
<h3>{{product-name}}</h3> \
<div class="product-price">{{product-price}}</div> \
<i {{arrow-updown}}></i> \
</div> \
</div> \
</div>';
getProducts();
function getProducts() {
$.ajax({
"url":'get-products.php',
"method":"get",
"dataType":"text",
"cache":false
}).done(function(jData){
var jProducts=JSON.parse(jData);
jProducts.forEach(function(jProduct){
var sProductId = jProduct.id;
var sProductName = jProduct.name;
var sProductBrand = jProduct.brand;
var sProductPrice = jProduct.price;
lastPrice = sProductPrice;
var sPriceInDom = Number($("#product-id-"+sProductId+" .product-price").text());
console.log(sPriceInDom + " DOM");
var arrowUP ='class="fa fa-arrow-up" aria-hidden="true"';
var arrowDOWN ='class="fa fa-arrow-down" aria-hidden="true"';
var sTempProduct = sProductTemplate;
sTempProduct = sTempProduct.replace("{{product-id}}", sProductId);
sTempProduct = sTempProduct.replace("{{product-icon}}", "http://image.flaticon.com/teams/1-freepik.jpg");
sTempProduct = sTempProduct.replace("{{product-name}}", sProductBrand);
sTempProduct = sTempProduct.replace("{{product-price}}", sProductPrice);
sTempProduct = sTempProduct.replace("{{arrow-updown}}",arrowUP);
$("#lblDisplayProducts").append(sTempProduct);
})
});
}
Hey, danke für deine Eingabe. Ich werde mir diese Diskussion ansehen. Ansonsten weiß ich, dass MVC hier wünschenswert wäre, aber dieser Code ist Teil einer Uni-Klassenzuweisung, und ich darf keine Designmuster oder Frameworks verwenden. :) –