• 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
158 wizyt
pytanie zadane 30 września 2021 w JavaScript przez Martita Bywalec (2,470 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 (251,250 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,470 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 (251,250 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,470 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,470 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 (251,250 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,470 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,470 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,470 p.)
Proszę o pomoc.
komentarz 30 września 2021 przez Martita Bywalec (2,470 p.)
Pomóżcie błagam nie mam zielonego pojęcia jak to zrobić.

Podobne pytania

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

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...