• 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...

–1 głos
338 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 (27,710 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 (22,600 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 (22,600 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 1,334 wizyt
0 głosów
1 odpowiedź 355 wizyt

93,424 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...