• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zrobiłam kalkulator na lekcje r.informatyki ale nie wyświetla mi się wynik...

Object Storage Arubacloud
–1 głos
249 wizyt
pytanie zadane 27 kwietnia 2021 w JavaScript przez Iskietka Nowicjusz (180 p.)
edycja 27 kwietnia 2021 przez Iskietka
<!DOCTYPE html>
 <html lang="en">
    <head>
	  <meta charset="utf-8">
	  <meta name="viewport" content="width=device-width, initial-scale=1.0">
	  <title>Kalkulator</title>
	  <link rel="stylesheet" href="style.css">
	  <script src="skrypt.js" defer></script>
 </head>
 <body>
      <div class="kalkulator">
	   <div class="wynik">
	    <div class="poprzednie-dzialanie"></div>	
		<div class="aktualne-dzialanie"></div>
	   </div>
	
	
	  <button class="wyczysc col-dwa">AC</button>
	  <button class="usun">DEL</button>
	  <button class="operator">√</button>
	  <button class="operator">÷</button>
	  <button class="liczba">1</button>
	  <button class="liczba">2</button>
	  <button class="liczba">3</button>
	  <button class="operator">^</button>
	  <button class="operator">&times </button> 
	  <button class="liczba">4</button> 
	  <button class="liczba">5</button>
	  <button class="liczba">6</button>
	  <button class="operator">%</button>
	  <button class="operator">-</button>
	  <button class="liczba">7</button>
	  <button class="liczba">8</button>
	  <button class="liczba">9</button>
	  <button class="operator">log</button>
	  <button class="operator row-dwa">+</button>
	  <button class="liczba">.</button>
	  <button class="liczba">0</button>
	  <button class="rownosc col-dwa">=</button>
</div>
</body>
</html>



const liczby = document.guerySelectorAll('.liczba')
const operatory = document.guerySelectorAll('.operator')
const wyczysc = document.guerySelector('.wyczysc')
const usun = document.guerySelector('usun')
const rownosc = document.guerySelector('.rownosc')
const wynikPoprzednie = document.guerySelector('poprzednie-dzialanie')
const wynikAktualne = document.guerySelector('.aktualne-dzialanie') 


var aktualneDzialanie = ''
var poprzednieDzialanie = ''
var operacja = undefined 

const oblicz = () => {
	let dzialanie
	if(!poprzednieDzialanie || !aktualneDzialanie) {
		return
	}
	
	const poprzednie = parseFloat(poprzednieDzialanie)
	const aktualne = parseFloat(aktualneDzialanie)
	
	
	if(isNaN(poprzednie) || isNaN(aktualne)) { 
	  return
    }

    switch ( operacja) { 
	  case '+': 
	  dzialanie = poprzednie + aktalne 
	  break;
	 case '-':
	  dzialanie = poprzednie - aktalne 
	  break;
	 case 'x':
	  dzialanie = poprzednie * aktaulne 
	  break;
	 case '÷':
	 if(aktualne === 0 ) 
	 {
		 wyczyscWynik( )
		 return
	 }
	  dzialnie = poprzednie / aktualne 
	  break 
	 case '√':
	  dzialanie = Math.pow(poprzednie, 1/aktualy)
	  break
	 case '^':
	 dzialanie = Math.pow(poprzednie,aktualne)
	  break
	 case 'log':
	  dzialanie = Math.log(poprzednie, aktualne)
	  break;
	 default:
	  return
    }
	
	aktualneDzialanie = dzialanie 
	operacja = undefined
	poprzednieDziałanie = '' 
  }

const wybierzOperacje = (operator) => {
	if(aktulaneDzialanie === ''){
		return
    }
	if(porzednieDzialanie !== '') {
		const poprzednie = wynikPoprzednie.innerText
	if(aktualizujDzialanie.toString() ==='0' && poprzednie[poprzednie.length-1]==='+') {
		wyczyszcWynik()
		return
	    }
	   oblicz()
	}
     operacja = operator 
	 poprzednieDzialanie = aktualneDzialanie 
	 aktualneDzialanie = ''
    }




const zaktualizujWynik = () => {
	wynikAktualny.innerText = aktualneDzialanie
	if(operacja !=null) {
	wynikPoprzednie.innerText = poprzednieDzialanie + operacja 
  } else {
	 wynikPoprzednie.innerText = ''
  }
  
  const dodajLiczbe = (liczba) => {
	  if(liczba === '.') {
		  if(aktualneDzialanie.includes('.')){
			 return
  
  
       }
	 aktualneDzialanie = aktualneDzialanie.toString()+ liczba.toString()
  }
  
  
  const usunLiczbe = () => {
	aktualneDzialanie = aktualneDzialanie.toString().slice(0, -1)
  }
  
  const wyczyscWynik = () =>  {
	  aktualizujDzialanie = ''
	  poprzednieDzialanie = ''
	  operacja = undefined 
  
  liczby.forEach((liczba) => {
	  liczba.addEventListener('click', () => {
		  dodajLiczbe(liczba.innerText)
		  zaktualizujWynik()
	  })
    }) 
		
	usun.addEventListener('click',() => {
		usunLiczbe()
		zaktualizujWynik()
	})
	
	operatory.forEach((operator) => {
		operator.addEventListener('click', () => {
	      wybierzOperacje(operator.innerText)
		  zaktualizujWynik()
		})
	  })
	  
	  rownosc.addEventListener('click', () => {
		  oblicz()
		  zaktualizujWynik()
	    })
		  
	 wyczysc.addEventListener('click',() => {
			 wyczyscWynik()
			 zaktualizujWynik()
		  })  



		*, *::after, *::before {
	box-sizing: border-box;
	font-family: sans-sans-serif; 
	font-size: 22px;
	font-weight: 500;
	color: blue;
}
	body {
      padding: 0;
	  background: pink;
	}
		
	
    .kalkulator {
		margin: 25px;
		display:grid;
		justify-content: center;
		align-content: center;
	    grid-template-columns: repeat(5,80px);
		grid-template-rows: minmax(120px, auto) repeat(5, 80px); 
	}	
		
		
    .wynik {
	   grid-column: 1 / -1;
	   background-color: pink;
	   display: flex;
	   flex-direction: column;
	   align-items: flex-end;
	   justify-content: space-between;
	   padding: 25px;
	   box-shadow: 0px 4px 25px -10px rgba(0,0,0,0.75);
	   word-wrap: break-word;
	   word-break: break-all;
	  }
	  .poprzednie-dzialanie {
		  font-size: 16px;
		  font-weight: 400;
		  color: rgba(255,255,255, .8)	  
	  }
	  .aktualne-dzialanie {
		  font-size: 30px;
		  
	  }
	  
	  button{
		cursor: pointer;
		border: 1px solid #333533;
		background: grin;
		outline: none;
		  
		  
	  }
	 
	 button:hover, button:focus {
		 background: rgba(36, 36, 35, .95);
	 }
	 
	 .col-dwa {
		grid-column: span 2;

	 }
	 
	 .row-dwa{
		grid-row: span 2;
	 }
	
	
	
	
	
	

 

1
komentarz 27 kwietnia 2021 przez wizarddos Nałogowiec (25,930 p.)
Zmień kategorię z Java na JavaScript. To 2 różne języki i lepiej ich nie mylić
komentarz 27 kwietnia 2021 przez overcq Pasjonat (21,710 p.)

@Is­kie­t­ka, dodaj kod html tego kalkulatora.

komentarz 27 kwietnia 2021 przez Iskietka Nowicjusz (180 p.)
dodałam wszytsko czyli html , css i JavaScript

1 odpowiedź

0 głosów
odpowiedź 27 kwietnia 2021 przez overcq Pasjonat (21,710 p.)
wybrane 27 kwietnia 2021 przez Iskietka
 
Najlepsza

Były literówki i zgubione nawiasy, dlatego nie działało.

https://jsfiddle.net/35t8k0bp/

Ale kalkulator wymaga jeszcze dopracowania, ponieważ są błędy, np. takie jak operacja o długości większej niż znak.

komentarz 27 kwietnia 2021 przez Iskietka Nowicjusz (180 p.)
Dziękuje!

Podobne pytania

0 głosów
2 odpowiedzi 809 wizyt
0 głosów
1 odpowiedź 276 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...