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

<!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님의 댓글"

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

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [1차 해결 및 추가] 서버 접속 불가 문제 안내 14 마스터 24.06.20.15:22 942
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 2911
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 6678
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4724
686 자동 스크롤 캡쳐 잘 되는 윈도우용 캡쳐 프로그램 추천 부탁드립니다 6 이니스프리 17.12.03.13:22 1690
685 원래 미디어위키가 틀을 넣으면 색이 사라지나요? 7 260578 17.12.03.17:41 253
684 인용문, 가로줄등이 작동하지 않습니다. 5 260578 17.12.03.17:44 227
683 에.. 서명이 어디갔지... 1 image 260578 17.12.04.14:57 256
682 리버티스킨 목차 버튼 삭제 3 image 260578 17.12.04.16:46 266
681 이미지 트래픽 절감에 관련하여 질문 드려요 7 이니스프리 17.12.05.13:42 492
680 "크롬이 응답하지 않습니다. 다시 시작하시겠습니까?" 오류 관련 질문 드려요 ^^ 8 이니스프리 17.12.05.20:05 2892
679 미디어위키 각주 확장기능 도움 2 260578 17.12.08.17:44 358
678 이게... 무슨상황인거지요? 12 image 260578 17.12.10.09:31 419
677 호스팅서비스를 변경하려면 어떻게 해야 하나요? 1 칸달프 17.12.11.11:42 243
676 그누보드 게시글 자동 작성 php 파일 관련해서 질문 드려요 ^^ 10 image 이니스프리 17.12.12.18:57 1967
675 이 "게시" 버튼이 오작동하여 떼어버리려고합니다. 2 image 260578 17.12.12.21:46 218
674 실시간 오디오 스트리밍을 하고 싶습니다. 도와주세요. 6 김윤광 17.12.13.13:33 2035
673 서브도메인 적용 방법좀 알려주실수있을까요? 260578 17.12.13.16:53 205
672 다른 버튼은 바꾸어봤지만 요 + 버튼은 찾을 수 가 없네요... image 260578 17.12.14.18:30 205
671 php로도 irc 접속이 가능한가요? 2 준그루 17.12.16.18:18 235
670 질문이 있습니다! 2 준그루 17.12.17.04:36 233
669 Tracert 명령어의 사용 방법과 관련하여 질문 드립니다 ^^ 4 이니스프리 17.12.21.14:22 637
668 ssh 로 접속했는데, 왜 아무 명령어가 되지 않을까요? 14 워시퍼 17.12.23.23:52 301
667 만약 광고를.. 13 Hanam09 17.12.30.18:59 286