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

Błędny wynik cotangensa stopni od 1 do 44 Javascript

VPS Starter Arubacloud
0 głosów
180 wizyt
pytanie zadane 30 września 2021 w JavaScript przez Martita Bywalec (2,520 p.)
edycja 30 września 2021 przez Martita

Dzień dobry jestem początkująca . Szukałam i nie znalazłam. Proszę o pomoc.

Po wprowadzeniu przez użytkownika liczby stopni od 1 do 44 to wynik pokazuje błędny wynik. Natomiast gdy użytkownik wprowadza liczby stopni od 45 wzwyż to wynik jest poprawny. Co jest źle?

Przykład

Jak użytkownik podaje liczbę 1 to wynik pokazuje 0.0175 zamiast -0.0175.

<!DOCTYPE html>
<html lang="pl">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="stopien_sinus.js"></script>
</head>

<body>
    <form id="oblicz" action="" method="post" autocomplete="off">
        <div>
            <h3>Przelicznik Stopnia Alfa na Sinus Alfa</h3>
            Stopień Alfa <input type="number" id="SA"><br>
            Cotangens: <span id="CTAN">= </span><br><br>
            <input type="button" value="Oblicz" onclick="oblicz()">
            <input type="reset" value="RESETUJ" onclick="resetuj()">
        </div>
    </form>

</body>

</html>

 

function ctg(SA) {
  if (SA % 90 == 0) {
    if ((SA / 90) % 2 == 0) {
      return ' <b>Nie istnieje! <b>';

    } else {
      return 0;
    }

  }
  return Math.tan(Math.PI / 180 * SA).toFixed(4);
}

function oblicz() {
const SA = parseInt(document.getElementById("SA").value);

const CTAN = document.getElementById('CTAN');
CTAN.innerHTML = ctg(SA);

}

II sposób jak użytkownik podaje liczbę 1 to wynik pokazuje 57.2900 zamiast -0.0175.

function ctg(SA) {
  if (SA % 90 == 0) {
    if ((SA / 90) % 2 == 0) {
      return ' <b>Nie istnieje! ';

    } else {
      return 0;
    }

  }
  return 1 / (Math.tan(Math.PI / 180 * SA));
}

function oblicz() {
const SA = parseInt(document.getElementById("SA").value);

const CTAN = document.getElementById('CTAN').value;
CTAN.innerHTML = ctg(SA).toFixed(4);

}

 

 

komentarz 30 września 2021 przez VBService Ekspert (254,880 p.)
edycja 30 września 2021 przez VBService

Nie dotyczy Twojego pytania, ale onclick w button oblicz odwołuje się do nieistniejącej funkcji myFunction().

<input type="button" value="Oblicz" onclick="myFunction()">


w funkcji ctg() masz niedomknięty tag <b>.
return ' <b>Nie istnieje!</b> ';

 

Stała CTAN nie jest nigdzie wykorzystana.

function oblicz() {
  . . .
  const CTAN = document.getElementById('CTAN').value;

  . . .
}

pomijając fakt, że nie będzie nic zawierać. 

Sprawdź (dodaj do Twojego kodu i zobacz wynik w konsoli js-a)

window.onload = () => {
  const CTAN = document.getElementById('CTAN').value;
  console.log(CTAN);
}

dzieje się tak, ponieważ document.getElementById('CTAN') odwołuje się do elementu <span>, który nie posiada atrybutu value

Odwołanie się do zawartości elementu <span>, może się odbyć za pomocą

const CTAN = document.getElementById('CTAN').innerHTML;

lub

const CTAN = document.getElementById('CTAN').innerText;

lub

const CTAN = document.getElementById('CTAN').textContent;

 

w tej części kodu jest już : (dwukropek) po słowie Cotangens

. . .
Cotangens: <span id="CTAN">= </span>
. . .

Moim zdaniem ten znak równości w tag-u span nic nie wnosi, poza tym ten zapis i tak go usuwa.

 . . .
document.getElementById('CTAN').innerHTML = ctg(SA);
. . .

jezeli mimo wszystko chcesz go mieć to ustaw go tak:

. . .
Cotangens: = <span id="CTAN"></span>
. . .

albo nawet tak

document.getElementById('CTAN').innerHTML = `= ${ctg(SA)}`;

to wtedy komunikat

return ' <b>Nie istnieje!</b>';

będzie bez znaku = (równości)

komentarz 30 września 2021 przez Martita Bywalec (2,520 p.)

Dzięki

Jest wykorzystywana

const CTAN = document.getElementById('CTAN').value;
document.getElementById('CTAN').innerHTML = ctg(SA);

 

komentarz 30 września 2021 przez VBService Ekspert (254,880 p.)

No nie jest, usuń tę linie a zobaczysz, że funkcja będzie dalej działać

const CTAN = document.getElementById('CTAN').value;

Chyba chodziło Tobie o

const CTAN = document.getElementById('CTAN');
CTAN.innerHTML = ctg(SA);

 

komentarz 30 września 2021 przez Martita Bywalec (2,520 p.)

@VBService, Nic nie chce zmieniać tylko tyle żeby wynik był taki jak podałam wyżej.

 

komentarz 30 września 2021 przez Martita Bywalec (2,520 p.)

o to chodzi i tak mnie uczyli na uczelni i tak a być.

const CTAN = document.getElementById('CTAN').value;
document.getElementById('CTAN').innerHTML = ctg(SA);

 

komentarz 30 września 2021 przez VBService Ekspert (254,880 p.)
edycja 30 września 2021 przez VBService

@Marta Długa, 

Nie obraź się, ale coś źle Ciebie nauczyli, bo 

Sprawdź (dodaj do Twojego kodu i zobacz wynik w konsoli js-a)

window.onload = () => {
  const CTAN = document.getElementById('CTAN').value;
  console.log(CTAN);
}

dzieje się tak, ponieważ document.getElementById('CTAN') odwołuje się do elementu <span>, który nie posiada atrybutu value

Odwołanie się do zawartości elementu <span>, może się odbyć za pomocą

const CTAN = document.getElementById('CTAN').innerHTML;
  
lub
  
const CTAN = document.getElementById('CTAN').innerText;
  
lub
  
const CTAN = document.getElementById('CTAN').textContent;


tak jak już Tobie wcześniej pisałem, ten zapis

document.getElementById('CTAN').innerHTML = ctg(SA);

jest równoznaczny tym

const ctan = document.getElementById('CTAN');
ctan.innerHTML = ctg(SA);

lub np.

const ctan = document.querySelector('#CTAN');
ctan.innerHTML = ctg(SA);

 

komentarz 30 września 2021 przez Martita Bywalec (2,520 p.)
edycja 30 września 2021 przez Martita
Zmieniłam. Teraz mi powiedz co mam zrobić żeby wynik był taki jaki chce.

1 odpowiedź

0 głosów
odpowiedź 30 września 2021 przez Martita Bywalec (2,520 p.)
edycja 30 września 2021 przez Martita
Jak zmienić kod żeby np. po wprowadzeniu przez użytkownika liczby stopni 1 wynik pokazał -0.0175 a nie 0.0175 cotangens alfa?
komentarz 30 września 2021 przez Martita Bywalec (2,520 p.)
Proszę o pomoc.
komentarz 30 września 2021 przez Martita Bywalec (2,520 p.)
Pomóżcie błagam nie mam zielonego pojęcia jak to zrobić.

Podobne pytania

+1 głos
3 odpowiedzi 341 wizyt
pytanie zadane 21 września 2021 w JavaScript przez Martita Bywalec (2,520 p.)
0 głosów
1 odpowiedź 1,159 wizyt
0 głosów
1 odpowiedź 306 wizyt
pytanie zadane 30 sierpnia 2022 w C i C++ przez benny13 Obywatel (1,150 p.)

92,765 zapytań

141,690 odpowiedzi

320,503 komentarzy

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

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!

...