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

<!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 마스터 24.09.05.16:25 2637
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 10086
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4957
467 라이믹스 로그인 버튼 3 Nginx 18.11.15.17:51 302
466 네이비즘에서 측정한 스포어 서버시간의 오차 관련 질문 드립니다 (서버시간 측정 관련) 4 image 이니스프리 18.11.14.20:21 2587
465 라이믹스 도와주세요! 1 image Nginx 18.11.14.15:15 213
464 웹 개발 언어를 만들어보려고 합니다 1 260578 18.11.13.23:11 219
463 커뮤니티 사이트를 제작해보려고 합니다 3 ndbdbbn 18.11.11.20:51 463
462 Amazon Route 53 DNS 셋팅관련 7 image 갱생협스 18.11.11.08:56 331
461 미디어위키 flow확장기능 오류가 발생했습니다. 1 AA 18.11.10.18:40 204
460 안녕하세요!!!.. 왕초보 웹사이트 제작 관련 질문 드립니다. 8 image 그냥왕초보일.. 18.11.09.10:16 269
459 컴퓨터가 안꺼져요 11 국내산라이츄 18.11.08.04:15 931
458 우분투의 crontab을 관리하는 노하우나 툴이 있을까요? 14 이니스프리 18.11.07.00:27 317
계산기를 만드는데 문제가! 6 studyHTML 18.11.06.23:06 559
456 국제전자센터에서 스마트폰 구입 괜찮을까요? 2 이니스프리 18.11.05.20:42 1834
455 구매한 아이콘 없애는법 아시는분? 2 슬기 18.10.29.10:33 270
454 네이버 웹마스터도구에 대해서 질문이 있습니다. 8 image MYIG 18.10.28.17:33 462
453 https 에서 http 불러올수있는 방법이 뭐가있을까요? 8 슬기 18.10.28.01:20 445
452 문제가 무엇인가요? 1 260578 18.10.28.00:11 636
451 나무위키같은 각주를 구현하는 방법을 찾습니다. 1 image 260578 18.10.27.19:03 370
450 개인정보 보호 오류 무엇...ㅠㅠ 10 image 국내산라이츄 18.10.27.00:12 496
449 질문 드린 CSV 파일 업로드에 대한 코드를 작성했어요 ^^ 실사용 전에 보안상 취약점 등 문제는 없는지 여쭤봅니다 2 이니스프리 18.10.26.20:57 745
448 미디어위키 update.php 실행법 3 관종 18.10.25.21:06 272