Prosty kalkulator js

Prosty kalkulator js
Raloseq
  • Rejestracja:prawie 7 lat
  • Ostatnio:4 dni
  • Postów:286
0

Witam mam problem , robię prosty kalkulator w js niestety po kliknięciu w przycisk dodawanie nie odsyła odpowiedzi do diva wynik. Coś jest z liczba1 i liczba2 ponieważ jak np dam wynik = 2 to mi odsyła do diva wynik.

Kopiuj
<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <title>Kalkulator</title>
</head>
<body>
    <table>
        <tr>
            <td><input type="text" id="liczba1"></td>
            <td><input type="text" id="liczba2"></td>
            <td><div id="wynik"></div></td>
        </tr>
        <tr>
            <td><input type="submit" value="Dodawanie" onclick="dodawanie()"></td>
            <td><input type="submit" value="Odejmowanie" onclick="odejmowanie()"></td>
        </tr>
    </table>
    <script type="text/javascript" src="kalkulator.js"></script>
</body>
</html>
Kopiuj
var liczba1 = document.getElementById("liczba1").value;
var liczba2 = document.getElementById("liczba2").value;
var wynik = "";

function dodawanie() {
    wynik = liczba1 + liczba2;
    document.getElementById("wynik").innerHTML = wynik;
}
cerrato
Takie rzeczy lepiej jest zamieszczać na http://jsfiddle.net a na forum wkleić sam link do konkretnego fiddle
MA
  • Rejestracja:prawie 17 lat
  • Ostatnio:9 dni
  • Postów:644
0

Przenieś definicje liczba1 i liczba2 do funkcji, teraz to działa tak:
strona się wczytuje
do liczba1 przypisujesz wartość inputa (który jest pusty)
robisz dodawanie na wartościach które są zapisane w zmiennych a nie na nowych pobranych z pól tekstowych.

Raloseq
Ok nie da się tego zrobić jako zmienna globalna , tak to będę musiał do każdej funkcji kalkulatora dawać
MA
Zadałeś mi pytanie czy coś stwierdzasz?
MA
Możesz trzymać input w zmiennej globalnej, wartość (value) pobieraj już w funkcji.
SA
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 7 godzin
  • Postów:1435
2

Gdy masz

Kopiuj
var liczba1 = document.getElementById("liczba1");

to liczba1 jest referencją do obiektu. Jeśli zmieniają się właściwości tego obiektu (w tym value) to cały czas masz dostęp do tych aktualnych.

Edit: chyba warto napisać trochę więcej, bo nie dalej niż tydzień temu było wałkowane to samo
Przykład:

Kopiuj
var obj1 = {prop1: 'hello', prop2: 'world'}
var obj2 = obj1
obj2.prop1 = 'goodbye'
/// obj1 to teraz `{ prop1: 'goodbye', prop2: 'world' }`

Dzieje się tak, bo obj1 i obj2 wskazują na ten sam obiekt w pamięci.
Ale teraz zróbmy coś takiego:

Kopiuj
var str = obj1.prop1;
str = 'hello';
/// obj1 to nadal  `{ prop1: 'goodbye', prop2: 'world' }

Jasne?

edytowany 1x, ostatnio: Saalin
L7
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 8 godzin
  • Postów:433
0

Dodatkowo wypadałoby użyć tutaj parseInt bo dla wartości 1 i 1 suma wyjdzie nam 11 :D

edytowany 1x, ostatnio: leonpro778

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.