Zadanie z js i formularzem ',:)

Zadanie z js i formularzem ',:)
YourNextLineIs
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 3 lata
  • Postów:7
0

Treść:
**Napisać aplikację w JS pozwalającą na obliczenie objętości, pola powierzchni całkowitej oraz długości wszystkich krawędzi prostopadłościanu dla zadanych długości i szerokości podstawy oraz wysokości tego prostopadłościanu.

Dane wejściowe do aplikacji wprowadzić z klawiatury za pośrednictwem pól tekstowych input. Wynik wyświetlić na ekranie, na tej samej stronie WWW, również za pomocą pól tekstowych input.

Wykonać aplikację w dwóch wariantach, w zależności od położenia elementów wejścia/wyjścia. Pola tekstowe input jako elementy wejścia/wyjścia aplikacji.

→ powinny być umieszczone wewnątrz aplikacji HTML (wariant1)
→ powinny być zależne od jakiegokolwiek formularza (warian2)**

No więc mam problem z wypisaniem wartości w input, na razie mam tyle:

Kopiuj
<html>
    <head>
        <meta charset="utf-8">
        <title>Obliczanie wartości prostopadłościanu</title>
        <script>
            var x = document.getElementById('x').value;
            var y = document.getElementById('y').value;
            var z = document.getElementById('z').value;

            function objetosc(){
                 if ( isNaN(x) && isNaN(y) && isNaN(z) ){
                    alert("Dane które podałeś, na pewno nie są danymi prostopadłościanu.");
                }
                if(x>0 && y>0 && z>0){
                    document.getElementById("obw2");
                    $('#obw2').value(x*y*z);
                }
            }

           
        </script>
    </head>
    <body>
        <fieldset>
            <legend>Dane prostopadłościanu</legend>
            <form name="Dane">
                <input id="x" type="text" placeholder="Długość" required="required"><br><br>
                <input id="y" type="text" placeholder="Wysokość" required="required"><br><br>
                <input id="z" type="text" placeholder="Szerokość" required="required"><br><br>
                <button title="obw" onclick="objetosc()">Objętość</button>
                <input id="obw2" type="text" value="0" ><br><br>
                <button title="ppp" onclick="polepowierzchni()">Pole powierzchni całkowitej</button>
                <input id="ppp2" type="text" value="0"><br><br>
                <button title="kra" onclick="krawedzie()">Długości wszystkich krawędzi</button>
                <input id="kra2" type="text" value="0"><br><br>
            </fieldset>
        </form>
    </body>
</html>```
edytowany 1x, ostatnio: YourNextLineIs
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 12 godzin
1

Po pierwsze

Kopiuj
 if ( isNaN(x) && isNaN(y) && isNaN(z) ){

Tutaj chyba ma byc OR a nie AND.

Po drugie

Kopiuj
document.getElementById("obw2");
$('#obw2').value(x*y*z);

jQuery przeciez tutaj nie ma. Robisz tez document.getElementById ale nigdzie tego nie przechwytujesz.

Finalnie:
Dokument parsuje sie od gory do dolu. W momencie kiedy parsuje sie skrypt w headzie to te elementy z id "x" "y" "z" nie istnieja. A wiec var x == null, var y == null, var z == null. (wrzuc to do ciala funkcji)

Polecam korzystac z konsoli do debugowania (F12).


λλλ
edytowany 3x, ostatnio: stivens
YourNextLineIs
Dziękuję bardzo za odpowiedź , ale też w jaki sposób wypisać value w funkcji na onclick by wyświetlić wynik w input z id obw2?
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 12 godzin
1
Kopiuj
<html>
    <head>
        <meta charset="utf-8">
        <title>Obliczanie wartości prostopadłościanu</title>
    </head>
    <body>
        <fieldset>
            <legend>Dane prostopadłościanu</legend>
            <form name="Dane" action="javascript:void(0);">
                <input id="x" type="text" placeholder="Długość" required="required"><br><br>
                <input id="y" type="text" placeholder="Wysokość" required="required"><br><br>
                <input id="z" type="text" placeholder="Szerokość" required="required"><br><br>
                <button id ="objetoscBtn" title="obw">Objętość</button>
                <input id="obw2" type="text" value="0" ><br><br>
                <button title="ppp" onclick="polepowierzchni()">Pole powierzchni całkowitej</button>
                <input id="ppp2" type="text" value="0"><br><br>
                <button title="kra" onclick="krawedzie()">Długości wszystkich krawędzi</button>
                <input id="kra2" type="text" value="0"><br><br>
            </fieldset>
        </form>
        <script>
            function objetosc(){
                const x = document.getElementById('x').value;
                const y = document.getElementById('y').value;
                const z = document.getElementById('z').value;

                if ( isNaN(x) || isNaN(y) || isNaN(z) ){
                    alert("Dane które podałeś, na pewno nie są danymi prostopadłościanu.");
                }
                else if( x > 0 && y > 0 && z > 0) {
                    document.getElementById("obw2").value = x*y*z;
                }
                else {
                    alert("Długości muszą być dodatnie.");
                }
            }

            document.getElementById('objetoscBtn').addEventListener('click', objetosc);
        </script>
    </body>
</html>

W ten sposob zdaje sie dziala. Wylaczylem tez przeladowywanie strony jak klikasz przycisk.


λλλ
edytowany 1x, ostatnio: stivens
Zobacz pozostały 1 komentarz
stivens
Spoko. Uzywaj konsoli :)
YourNextLineIs
Jeden problem mam tylko, bo po wyświetleniu się wyniku w inpucie od razu on znika..
stivens
A skopiowales kod ode mnie czy przepisales?
stivens
Jesli to drugie to zwroc uwage na form action
YourNextLineIs
oh, dziękuje bardzo :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.