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

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

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

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 1024
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 4699
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4482
286 늦었네요. 배치파일 관련해서 도와주실 수 있나요? 2 Seia 17.05.21.01:22 218
285 제가 자바스크립트를 잘몰라서 원론적인 질문 하나 드립니다. 6 홀민 18.12.06.09:10 217
284 인용문, 가로줄등이 작동하지 않습니다. 5 260578 17.12.03.17:44 217
283 맥북 프로 구매와 관련하여 여쭤봅니다 4 image 이니스프리 20.01.20.13:03 216
282 음성번역기 앱 중에 켜놓으면 계속 번역을 해주는 앱이 있을까요? 이니스프리 19.12.25.11:16 216
281 호스팅 신청을 안하고 커뮤니티 활동을 해도 되나요? 5 없음 19.01.01.12:54 216
280 실험실 공유기의 상태가 실로 이상하네요. 2 국내산라이츄 17.10.27.14:20 216
279 이거 무슨 오류인가요? image 국내산라이츄 17.07.30.21:58 216
278 VPS 플랜 선택과 관련하여 질문 드립니다 ^-^ 4 image 이니스프리 20.02.28.20:52 215
277 판단 대기 시간 6 없음 19.01.11.14:09 215
276 usb 부팅 질문 드립니다. 1 calm 18.12.14.16:16 215
275 스포어 서버에서는 JQuery를 사용할 수 있나요? 4 260578 18.11.23.08:20 215
274 ssh 유저로는 DB를 못 건드리나요? 6 abnoeh 18.04.08.10:09 215
273 핸드폰 유심이 이상해요. 7 슬기 20.06.01.19:18 214
272 도메인 기관이전을 하려고 합니다 5 260578 19.06.13.22:18 214
271 Input submit 버튼 2 260578 19.01.20.18:44 214
270 POST 데이터가 보내지지 않습니다 5 260578 19.01.20.13:45 214
계산기를 만드는데 문제가! 6 studyHTML 18.11.06.23:06 214
268 파일질라는 접속하면 폴더지정이 안되나요? 2 슬기 18.09.30.23:48 214
267 php 검색 기능 도와주세요 8 title: 에그joyful 18.08.01.22:25 214