2017-12-06 2 views
0

ich diesen Code haben zu erhalten:Erste null bei dem Versuch, ein Objekt Anstand innerhalb local

let cart = []; 
let item1 = { 
     name: "CD - Animal", 
     price: "12", 
     qntd: "0" 
    }; 

let item2 = { 
    name: "CD - Cannibal", 
    price: "10", 
    qntd: "0" 
}; 

$("button").click(function() { 
    event.preventDefault(); 
    var li = $(this).parent(); 
    var quantity = $(li).find('input[type=number]').val(); 
    eval($(this).val()).qntd = quantity; 
    cart.push(eval($(this).val())); 
    console.log(item1.qntd); 
    localStorage.setItem(cart, JSON.stringify(cart)); 
    console.log(cart[0].name); 
    console.log(JSON.parse((localStorage.getItem(cart[0].name)))); 
}); 

Aber cart[0].name nicht den Namen des Objekts zurückgeben, statt, null zurückgibt.

cart[0] gibt das Objekt korrekt zurück, 0:{name: "CD - Animal", price: "12", qntd: "3"}, aber wenn ich versuche, cart[0].name zu erhalten, gibt es null statt "CD - Animal" zurück.

HTML:

<div class="card-content animal"> 
    <form style = "display: flex; justify-content: space-between; flex-wrap: wrap;"> 
     <input type = "number" class = "qntd" placeholder="Quantidade" style = "width: 100%; margin-top: -20px;" maxlength="10"> 
     <button class="btn waves-effect waves-light" type="submit" name="action" value = "item1">Add 
      <i class="material-icons right">attach_money</i> 
     </button> 
    </form> 
</div> 
+2

'eval ($ (this) .val()) qntd = Menge;.' DO NOT USE EVAL! :) – epascarello

+0

Ich brauche Ihre HTML-Datei – moon

+1

Sie setzen das Element mit einem "Schlüssel" von was auch immer Warenkorb (toString) ist ... dann versuchen Sie zu lesen mit 'cart [0]' ... was nicht das gleiche wie 'sein wird Warenkorb ... nicht überraschend, es funktioniert nicht - es ist wie das Setzen des Wertes mit dem Schlüsselnamen "Hallo" und erwartet "Auf Wiedersehen", um diesen Wert zurück zu lesen –

Antwort

0

Verwenden Index auf dem analysierten localStorage Artikel.

Versuchen JSON.parse((localStorage.getItem(cart)))[0].name statt

JSON.parse((localStorage.getItem(cart[0].name)));

+0

Es hat funktioniert. DANKE! – Chosmos

+0

@Chosmos, Sie sind herzlich willkommen. – Mamun

+0

Dies entspricht "... getItem ('[object Object]')' wenn 'cart' ein Array ist, das ein Objekt enthält. – Kaiido

0

Ein Problem dabei ist eval schlecht ist und Sie es verwenden und die Variablen Sie verweisen nicht im globalen Bereich und das ist, wo eval sucht. Verwenden Sie eine bessere Datenstruktur und verlassen Sie sich nicht auf Variablen.

var items = [ 
     { 
      name: "CD - Animal", 
      price: "12", 
      qntd: "0" 
     }, { 
     name: "CD - Cannibal", 
     price: "10", 
     qntd: "0" 
    } 
] 

Jetzt können Sie einfach darauf verweisen mit items[0].qntd

oder wollen Sie einen Schlüssel verwenden, schalten Sie es auf ein Objekt anstelle eines Arrays.

var items = { 
    item1: { 
     name: "CD - Animal", 
     price: "12", 
     qntd: "0" 
    }, 
    item2: { 
     name: "CD - Cannibal", 
     price: "10", 
     qntd: "0" 
    } 
} 
Verwandte Themen