• 목록
  • 아래로
  • 위로
  • 6
  • studyHTML
  • 조회 수 219

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8" />

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <title>Studyhtml의 숲: 계산기-Javascript</title>

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <style>

        .maintitle {

            font-family:"맑은 고딕", 돋움, 굴림, Arial, Helvetica, sans-serif; font-size:20px; color:green; text-align:center; text-decoration:none; 

        }

        .locationcenter {

            text-align:center; font-family:"맑은 고딕", 돋움, 굴림, Arial, Helvetica, sans-serif;

        }

        body {

            background-color:whitesmoke;

        }

    </style>

</head>

<body>

    <div style="width:300px; height:20px; margin-left:auto; margin-right:auto; margin-top:0%; margin-bottom:0%; background-color:white; display:table;">

        <div style="display: table-cell; vertical-align: middle;">

            <h1 class="maintitle"><strong><a href="/index.html"; class="maintitle"></strong>Studyhtml의 숲</a></h1>

        </div>    

    </div>

    <div style="width:65%; height:900px; margin-left:auto; margin-right:auto; margin-top:8%; margin-bottom:0%; background-color:lightgoldenrodyellow; border-style:solid;">

        <h3 class="locationcenter">계산기-Javascript</h3>

        <hr>

        <div style="width:180px; height:340px; margin-left:auto; margin-right:auto; border-style:solid; border-width:3px;">

            <div style="width:160px; height:40px; margin-left:auto; margin-right:auto; border-style:solid; border-width:2px;">

                <h5 style="font-size:36px; text-align:right; display:inline; max-width:120px;" id="answertext">0</h5>

            </div>

            <div style="width:180px; height:240px; margin-top:20px; margin-left:auto; margin-right:auto; border-style:solid; border-width:2px;">

                <input type=button value="1" onclick=enter1(answer) style="width:50px; height:20px;">

                <input type=button value="2" onclick="enter2(answer)" style="width:50px; height:20px;">

                <input type=button value="3" onclick="enter3(answer)" style="width:50px; height:20px;">

                <input type=button value="4" onclick="enter4(answer)" style="width:50px; height:20px;">

                <input type=button value="5" onclick="enter5(answer)" style="width:50px; height:20px;">

                <input type=button value="6" onclick="enter6(answer)" style="width:50px; height:20px;">

                <input type=button value="7" onclick="enter7(answer)" style="width:50px; height:20px;">

                <input type=button value="8" onclick="enter8(answer)" style="width:50px; height:20px;">

                <input type=button value="9" onclick="enter9(answer)" style="width:50px; height:20px;">

                <input type=button value="0" onclick="enter0(answer)" style="width:50px; height:20px;">

                <input type=button value="+" onclick="plus(answer)" style="width:50px; height:20px;">

                <input type=button value="-" onclick="minus(answer)" style="width:50px; height:20px;">

                <input type=button value="*" onclick="times(answer)" style="width:50px; height:20px;">

                <input type=button value="/" onclick="devide(answer)" style="width:50px; height:20px;">

                <input type=button value="=" onclick="calculation(answer, yeonsanstyle, firstnumber)" style="width:50px; height:20px;">

                <input type="button" value="지우기" onclick="delnumber(answer)" style="width:50px; height:20px;">

            </div> 

        </div>

        <h4 style='font-family:"맑은 고딕", 돋움, 굴림, Arial, Helvetica, sans-serif;'>(소스 코드 181줄) <br>(+피곤함)</h4>

    </div>

    <script>

        var answer = 0;

        var yeonsanstyle = plus;

        var firstnumber = 0;

        function enter1(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer + "1";

            entercomplete(answer);

        }

        function enter2(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer + "2";

            entercomplete(answer);

        }

        function enter3(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer + "3";

            entercomplete(answer);

        }

        function enter4(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer + "4";

            entercomplete(answer);

        }

        function enter5(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer + "5";

            entercomplete(answer);

        }

        function enter6(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer + "6";

            entercomplete(answer);

        }

        function enter7(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer + "7";

            entercomplete(answer);

        }

        function enter8(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer + "8";

            entercomplete(answer);

        }

        function enter9(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer + "9";

            entercomplete(answer);

        }

        function enter0(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer + "0";

            entercomplete(answer);

        }

        function entercomplete(answer) {

            document.getElementById("answertext").innerHTML = answer;

        }

        function delnumber(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var answer = answer.slice(0, -1);

            entercomplete(answer);

        }

        function plus(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var firstnumber = answer;

            var yeonsanstyle = "plus";

            var answer = "0";

            entercomplete(answer)

        }

        function minus(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var firstnumber = answer;

            var yeonsanstyle = "minus";

            var answer = "0";

            entercomplete(answer)

        }

        function times(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var firstnumber = answer;

            var yeonsanstyle = "times";

            var answer = "0";

            entercomplete(answer)

        }

        function devide(answer) {

            var answer = document.getElementById("answertext").innerHTML;

            var firstnumber = answer;

            var yeonsanstyle = "devide";

            var answer = "0";

            entercomplete(answer)

        }

        function calculation(answer, yeonsanstyle, firstnumber) {

            if(yeonsanstyle == "plus") {

                var intanswer = answer * 1;

                var intfirstnumber = firstnumber * 1;

                var answer = intanswer + intfirstnumber;

                var firstnumber = 0

                entercomplete(answer)

            }

            if(yeonsanstyle == "minus") {

                var intanswer = answer * 1;

                var intfirstnumber = firstnumber * 1;

                var answer = intanswer - intfirstnumber;

                var firstnumber = 0

                entercomplete(answer)

            }

            if(yeonsanstyle == "times") {

                var intanswer = answer * 1;

                var intfirstnumber = firstnumber * 1;

                var answer = intanswer * intfirstnumber;

                var firstnumber = 0

                entercomplete(answer)

            }

            if(yeonsanstyle == "devide") {

                var intanswer = answer * 1;

                var intfirstnumber = firstnumber * 1;

                if (intanswer == 0) {

                    window.alert("제수(나누는 수)가 0입니다.");

                    var answer = 0;

                    entercomplete(answer);

                    return;

                }

                var answer = intanswer / intfirstnumber;

                var firstnumber = 0

                entercomplete(answer)

            }

        }

    </script>

</body>

</html>


어떤 게 문제일까요?

마지막에 답 출력이 안 됩니다.

(+스파게티 코드급이라서 더 간단하게 할 수 있는 방법이 있다면 알려주세요ㅜㅜ) 

http://studyhtml.sfuhost.com/g-%EA%B3%84%EC%82%B0%EA%B8%B0-Javascript.html


댓글 6

도토리묵

코드가 너무 덕지덕지 합니다..(는 제생각)

일단 css,js 파일을 따로 만든후 html상에서 불러오는식으로 하면 훨-씬 깔끔해질듯 합니다.

보기에는 Onclick 속성에 문제가 있는듯 합니다

 

comment menu
2018.11.06. 23:47

신고

"도토리묵님의 댓글"

이 댓글을 신고 하시겠습니까?

Hanam09 → 도토리묵
profile image

onClick 속성에는 문제가 없으며, 변수 firstanswer ,yeonsanstyle 가 함수 안의 지역변수 내에서만 사용가능하다는점

초기 yeonsanstyle 부분이 함수를 가리킨다는점입니다...

yeonsanstyle 값은 무조건 문자열이어야 합니다.

 

comment menu
2018.11.10. 20:39

신고

"Hanam09님의 댓글"

이 댓글을 신고 하시겠습니까?

title: 황금 서버 (30일)humit
profile image

코드가 총체적으로 난국이네요.... 함수 내에서도 var answer를 두 번씩 선언을 하시고...

comment menu
2018.11.07. 10:58

신고

"humit님의 댓글"

이 댓글을 신고 하시겠습니까?

studyHTML 작성자
profile image

인터넷에서 검색해가면서 겨우 만든 거라서...

도와주실 수 있나요?

comment menu
2018.11.07. 17:35

신고

"studyHTML님의 댓글"

이 댓글을 신고 하시겠습니까?

title: 에그joyful
profile image

코드가 너무... 많아서!

그냥 다시 새로 만들어보시는건 어떠신가요??

https://coding-factory.tistory.com/16 여기 코드 복붙해서 css 추가하고 하면 쉽게 해결할 수 있고 괜찮을 것 같아요

그리고 css랑 js는 따로 파일을 만들어서 작성하시면 훨씬 깔끔하고 보기 좋고 사이트 접속 속도도 빨라져요!

comment menu
2018.11.07. 19:09

신고

"joyful님의 댓글"

이 댓글을 신고 하시겠습니까?

studyHTML 작성자
profile image

너무 복잡해서 그냥 처음부터 다시 짜기로 했습니다.

오히려 기분이 홀가분하네요.

comment menu
2018.11.07. 19:12

신고

"studyHTML님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 시스템 점검 작업 완료 안내 10 마스터 5일 전16:25 208
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 7272
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4766
706 네이버 카페의 게시글 크롤링과 관련하여 질문 드려요 ^^ 7 image 이니스프리 20.04.04.23:33 1554
705 파이썬 Requests과 HTTP 통신에 관하여 이론적으로 궁금한건데요~ 4 이니스프리 20.04.03.15:55 220
704 아이콘 구매와 활용법에 대한 질문 10 해피보이 20.04.02.18:04 245
703 사이트 메인페이지에 갈림길 화면이 뜨게 하는 법에 대하여 어쭈어 봅니다. 5 image 입체그림 20.04.01.19:31 226
702 Cloudflare와 관련하여 질문 드려요 ^-^ 7 이니스프리 20.03.30.14:48 451
701 크롤링 용도로 사용하는 VPS의 트래픽이 얼마나 될까요?? 2 이니스프리 20.03.29.21:02 282
700 안녕하세요ㅠㅠ 위키 URL 리다이렉션 관련 질문입니다 1 김광현 20.03.26.16:33 241
699 그누보드용 회원차단 크롬 확장프로그램을 만들어보려는데요~ ^-^ 7 이니스프리 20.03.24.23:53 272
698 VPS 웹서버 설치 후 보안을 위해 추가로 해야되는 조치에는 어떤 것이 있을까요?? 6 이니스프리 20.03.13.22:46 260
697 페북이나 트위터처럼 태그 속성이 자주 변경되는 사이트의 크롤링은 어떻게 해야 될까요?? 4 이니스프리 20.03.09.00:27 246
696 브라우저 개발자도구에서 formdata를 숨기는 방법이 있는가요? 6 이니스프리 20.03.07.23:54 2680
695 그누보드5 홈피 관리해주실분 찾습니다. 찰리 20.03.04.23:10 219
694 [파이썬] 윈도우에서 datetime 객체의 invalid format string 에러 3 이니스프리 20.03.04.15:52 1542
693 XE 에디터가 작동하지 않아요 ㅠㅠ 4 image 입체그림 20.03.03.17:30 236
692 VPS 플랜 선택과 관련하여 질문 드립니다 ^-^ 4 image 이니스프리 20.02.28.20:52 222
691 스터디포어스 웹호스팅상에서 비주얼에디터 설치하는 중 오류가 났습니다 ㅠㅠ image 입체그림 20.02.28.14:40 214
690 [해결][CURL/PHP] 스터디포어스서버에서의 PHP CURL에 대한 특정 서버의 잘못된 응답에 대하여 3 Hanam09 20.02.27.15:36 341
689 [파이썬] 웹 페이지 크롤링 시 조건에 따라 보여졌다 안보여지는 class를 조건문으로 사용 하고 싶은데요.. 4 위돈톡애니모 20.02.25.15:19 1342
688 [파이썬] Temporary failure in name resolution에 대해 여쭤봅니다 2 이니스프리 20.02.25.11:50 1002
687 홈서버용 CPU 좀 봐주시면 감사하겠습니다~ ㅠㅠ 7 image 이니스프리 20.02.24.22:40 227