Pojawia się -> [object MouseEvent] zamiast pobranej zmiennej

0

Witam serdecznie! To mój pierwszy post, ale nie pierwszy problem :D Piszę stronkę do zapisywania oszczędności i mam problem z przekazywaniem wartości z inputa .Oto kod:

// zapisanie sumy docelowej oszczędności

const all = document.querySelector('#all').value;

function saveAll(all) {

    const el = document.getElementById('yet');
    el.textContent = all + ' zł'; - > // WYŚWIETLA SIĘ TUTAJ  [object MouseEvent] + zł ; ZAMIAST PODANEJ KWOTY W INPUCIE

function load() {
   
    var btnAll = document.getElementById("btn-all");
    btnAll.addEventListener("click", saveAll, false);

}

Problem nie pojawia się, gdy zmienna all jest zdefiniowana w funkcji saveAll. Jednak potrzebuje, aby była zdefiniowana poza nią, by potem wykonać działania (całość sumy odjąć od wpisywanych kwot).
Teraz pokażę cały kod javascript:

// Wypisanie celu
function describeText() {
    const aim = document.querySelector('#aim').value;
    const el = document.getElementById('object');
    el.textContent = aim;

}


// zapisanie sumy docelowej oszczędności
const all = document.querySelector('#all').value;
function saveAll(all) {

    const el = document.getElementById('yet');
    el.textContent = all + ' zł'; - > // [object MouseEvent] + zł
}

//Wpłata gotówki
function depositMoney() {
    const money = document.querySelector('#money').value;
    const el = document.getElementById('now');
    el.textContent = money + ' zł';
}

//nasłuchiwacze
function load() {
    var btnCel = document.getElementById("btn-cel");
    btnCel.addEventListener("click", describeText, false);

    var btnAll = document.getElementById("btn-all");
    btnAll.addEventListener("click", saveAll, false);

    var btnDeposit = document.getElementById("btn-deposit");
    btnDeposit.addEventListener("click", depositMoney, false);
}


Jak sprawić abym mogła odjąć money od all ? i zdefiniować zmienną poza funkcją wraz z działającym przekazywaniem wartości w funkcjach

0

Może inaczej: dlaczego uważasz, że powinna tam się znaleźć oczekiwana przez Ciebie wartość? Dokumentacja tak mówi?

0

Hmm chyba już rozumiem dlaczego nie wypisuje, bo uruchamiane funkcje nie mają w sobie tej zmiennej... Jednak dalej nie wiem jak zrobić, aby zmienne były definiowane tylko 1 raz i działały w następnej funkcji do obliczeń.
Proszę mi wybaczyć brak podstawowej wiedzy, dopiero stawiam pierwsze kroki ^^

0

Ano widzisz ;-)

Może tak?

function getAll() {
  return document.querySelector('#all').value;
}

function saveAll() {
    document.getElementById('yet').textContent = getAll() + ' zł';
}
0

Ano działa :D No teraz to mam zastrzyk wiedzy. Funkcja do obliczeń też już zrobiona:

function countMoney() {
    
    return getAll() - getMoney();
}

function saveMoney() {
    document.getElementById('now').textContent = getMoney() + ' zł';

    document.getElementById('yet').textContent = countMoney() + ' zł';
}

Tylko teraz chodzi o to, że jak już odejmie poprawnie i chcę wpisać kolejną wpłatę to nadal odejmuje od tej samej kwoty..
n.p kwota do zaoszczędzenia: 100 zł
pierwsza wpłata: 30 zł //oddaje dobry wynik czyli 70 zł
druga wpłata: 40 zł // tym razem zamiast odjąć od 70zł, odejmuje od 100zł i wychodzi, że pozostało 60 zł.
Może tablicą i pętlą to zrobić, albo użyć php, cookie?

0

Powoli, powoli - po co Ci tutaj język serwerowy albo ciasteczka?
Na początek wrzuć więcej kodu - w przytoczonym przez Ciebie fragmencie na pierwszy rzut oka nie ma błędu.

0

To nie jest przekazywanie all do funkcji, tylko użycie parametru bez przekazania argumentu przy wywołaniu. all powinno być referencją do inputa a value powinno być pobierane dopiero podczas przypisania do el. all jest w globalnym scope więc będzie dostępne dla funkcji saveAll() i nie potrzeba go przekazywać jako argument

1 użytkowników online, w tym zalogowanych: 0, gości: 1