• 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
225 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 (255,760 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 (255,760 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 (255,760 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 408 wizyt
pytanie zadane 21 września 2021 w JavaScript przez Martita Bywalec (2,520 p.)
0 głosów
1 odpowiedź 1,236 wizyt
0 głosów
1 odpowiedź 362 wizyt
pytanie zadane 30 sierpnia 2022 w C i C++ przez benny13 Obywatel (1,150 p.)

92,953 zapytań

141,913 odpowiedzi

321,141 komentarzy

62,286 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...