Js toplama
Merhaba arkadaşlar bir javascript kodu var ve yardım etmeniz gerekiyor.
localStorage.setItem("sayi", 15);
Ve bu locale kaydediliyor, bunun üstüne başka veri yazdırıp toplama işlemi yaptırmak istiyorum.
Örnek:
localStorage.setItem("sayi", 15);
localStorage.setItem("sayi", 30);
Sayı 30 değeri gönderince sayı 15in üstüne eklenmesi lazım.
Nasıl yapabilirim ?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (7)
Öncelikle eski değeri almalısın bunun için
localStorage.getItem("sayi")
Fonksiyonu kullanılır sonrasında alınan değeri number ifadeye çevirmen gerekir.
Number(localStorage.getItem("sayi"))
Bundan sonra gelen ifadenin number olduğundan emin olmak için birkaç kontrol daha yapmalısın.
let oldValue = Number(localStorage.getItem("sayi"))
if(typeof oldValue !== 'number' || isNaN(oldValue)){
oldValue=0
}
Eğer kontrolü geçemezse sıfır olarak baz alıp kodunun hata vermesini engellersin.
Şimdide eski değerini yeni değerle toplayıp storagetaki değerin üzerine yazabilirsin.
localStorage.setItem("sayi", oldValue + 30);
Tüm code;
let oldValue = Number(localStorage.getItem("sayi"))
if(typeof oldValue !== 'number' || isNaN(oldValue)){
oldValue=0
}
localStorage.setItem("sayi", oldValue + 30);
kardeşim ilk başta bir varable oluşutur
const total = 0
getLocalStorageTotal(number){
total = total+number
localStorage.setItem("sayi", total);
}
böyle deneyebilirsin
localStorea Kaydedilen Bir Inteager Otomatik Olarak String Olur Ama parseInt
Fonksiyonuyla Yapabilirsiniz.
localStorage.setItem("sayi", 15);
localStorage.setItem("sayi", parseInt(localStorage.getItem("sayi"))+30);
console.log(localStorage.getItem("sayi")) // 45
İyi Günler
Anlayabileceğini pek zannetmiyorum ama en azından bi okursun.
localStorage e o yazdığın gibi bir integer değer kaydedemezsin, otomatik olarak string e dönüştürülür. Ve yine localstorage üzerinde doğrudan işlem yapamazsın. Önce getItem ile değeri alacaksın. Yeni sayı ile toplayıp yeniden kayıt edeceksin. Tabii Toplama işlemi senin istediğin şekilde yapılabilmesi için o aldığın sayıyı parseInt fonksiyonundan geçirmen gerekiyor önce. Anlatmak yerine direkt kod bekliyorsun biliyorum, ama acemi olmayan yazılımcı bu anlattıklarımı koda dökebilir.