728x90
반응형

정답을 맞추면 다음 문제로 넘어간다.

 

Controller.java

    @RequestMapping("/minigame.do") 
    public String minigame(HttpServletRequest request, Model model, @RequestParam HashMap<String, Object> map) throws Exception{
        return "/minigame";
    }

 

minigame.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="EUC-KR">
	<script src="../js/jquery.js"></script>
	<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	<title>Insert title here</title>
</head>
<body>
	<div id="app">
		<div>미니게임 1.</div>
		<div>랜덤 숫자 찾기(0~100)</div>
		<input type="text" v-model="answer" maxlength="10" name="answer"/>
		<button @click="fnAnswer" @keyup.enter="fnAnswer">선택</button>
	</div>
</body>
</html>
<script type="text/javascript">
	var app = new Vue({ 
	    el: '#app',
	    data : {
			randomNum : "",
			answer : ""
	    }   
	    , methods: {
			fnGetNum : function(){
				var self = this;
				self.randomNum = Math.floor(Math.random() * 100) +1;
				console.log(self.randomNum);
			},
			fnAnswer : function(){
				var self = this;
				if(self.answer == self.randomNum){
					alert("정답입니다!");
					self.fnGetNum();
				} else if(self.answer < self.randomNum){
					alert("UP");
		    	} else if(self.answer > self.randomNum){
					alert("DOWN");
	    		}
			}
	    }   /* methods 끝 */
	    , created: function () {
	    	var self = this;
	    	self.fnGetNum();
		}
	});
</script>

 

 

 

 


정답을 맞춘 횟수까지 출력하기 위해 cnt 변수를 추가하였다.

<script type="text/javascript">
	var app = new Vue({ 
	    el: '#app',
	    data : {
			randomNum : "",
			answer : "",
			cnt : 0
	    }   
	    , methods: {
			fnGetNum : function(){
				var self = this;
				self.randomNum = Math.floor(Math.random() * 100) +1;
				self.cnt = 0;
				console.log(self.randomNum);
			},
			fnAnswer : function(){
				var self = this;
				self.cnt++;
				if(self.answer == self.randomNum){
					alert("정답입니다! " + self.cnt + "번만에 맞추셨습니다!");
					self.fnGetNum();
				} else if(self.answer < self.randomNum){
					alert("UP");
		    	} else if(self.answer > self.randomNum){
					alert("DOWN");
	    		}
			}
	    }   /* methods 끝 */
	    , created: function () {
	    	var self = this;
	    	self.fnGetNum();
		}
	});
</script>

 

 

728x90
반응형
728x90
반응형

기존 코드를 이용하여 자바스크립트 코드를 작성하시오.

 

 

 

 

문제 1

아이디와 비밀번호를 입력하지 않았을 때, 입력하라는 창을 띄우시오.

 

▶ 코드

<script>
  function join () {
    var id = document.getElementById('uid');
    if(id.value == '' || id.value == undefined){
      alert("아이디를 입력하시오.");
      return;
    }

    var pwd1 = document.getElementById('pwd1');
    if(pwd1.value == '' || pwd1.value == undefined){
      alert("비밀번호를 입력하시오.");
      return;
    }
  }
</script>

 

 

▶ 출력 결과

 

 

 

문제 2

비밀번호를 4자리 미만으로 출력했을 때 4자리 이상 입력하라는 창을 띄우시오.

 

▶ 코드

    console.log(pwd1.value.length);
    if(pwd1.value.length < 4){
      alert("비밀번호를 4자리 이상 입력하시오.");
      return;
    }

 

 

▶ 출력 결과

  • return 을 작성하여 join 메소드를 빠져나간다.

 

 

 

 

 

문제 3

두 개의 비밀번호가 다를 때, 비밀번호가 다르다는 창을 띄우시오.

 

▶ 코드

    var pwd2 = document.getElementById('pwd2');
    if (pwd1.value != pwd2.value){
      alert("비밀번호가 다릅니다.");
      return;
    }

 

 

▶ 출력 결과

 

 

 

 

문제 4

가입 경로가 블로그일 때 블로그는 선택할 수 없다는 창을 띄우고, 가입 경로를 검색으로 바꾸시오.

 

▶ 코드

    var path = document.getElementById('path');
    if(path.value == "blog") {
      alert("블로그는 선택할 수 없습니다.");
      path.value = "search";
      return;
    }

 

 

▶ 출력 결과

  • 가입 경로가 블로그에서 검색으로 바뀌었다.

 

 

 

 

 

 

 

 

기존 코드

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>회원 가입_최종</title>
    <style>
      #container {
        width:600px;
        margin:10px auto;
      }
      ul {
        list-style: none;
        padding-left: 0;
      }
      li {
        margin:10px;
      }
      .li_label {
        width:120px;
        line-height: 36px;
        float:left;
        font-weight:bold;
      }
      .txt_input {
        width:300px;
        height:30px;
      }
      select {
        width:100px;
        height:30px;
      }
      #buttons {
        width:100%;
        margin:30px auto;
        text-align: center;
      }
      .but {
        padding: 10px;
        font-size: 15px;
      }
      /* input[required] {
        border: 1px solid red;
      } */
      li label {
        font-style: italic;
      }
      input:checked + label{
        font-weight: bold;
      }
    </style>
  </head>
  <body> 
    <div id="container">
      <h1>회원 가입을 환영합니다</h1>
      <form>
        <fieldset>
          <legend>사용자 정보</legend>    
          <ul>
            <li>
              <label class="li_label" for="uid">아이디</label>
              <input class="txt_input" id="uid" autofocus placeholder="4자 ~ 10자 사이, 공백없이" required> 
            </li>
            <li>
              <label class="li_label" for="umail">이메일</label>
              <input class="txt_input" type="email" id="umail" required> 
            </li>
            <li>
              <label class="li_label" for="pwd1">비밀번호</label>
              <input class="txt_input" type="password" id="pwd1" placeholder="문자와 숫자, 특수 기호 포함" required> 
            </li>        
            <li>
              <label class="li_label" for="pw2">비밀번호 확인</label>
              <input class="txt_input" type="password" id="pwd2"> 
            </li>
            <li>
              <label class="li_label" for="path">가입 경로</label>
              <select id="path">
                <option value="blog">블로그</option>
                <option value="search">검색</option>
                <option value="sns">SNS</option>
                <option value="etc">기타</option>
              </select>
            </li>
            <li>
              <label class="li_label" for="memo">메모</label>
              <textarea cols="40" rows="4" placeholder="남길 말씀이 있다면 여기에"></textarea>
            </li>
          </ul>      
        </fieldset>
        <fieldset>
          <legend>이벤트와 새로운 소식</legend>
          <input type="radio" name="mailing" id="mailing_y">
          <label for="mailing_y">메일 수신</label>
          <input type="radio" name="mailing" id="mailing_n" checked>
          <label for="mailing_n">메일 수신 안 함</label>     
        </fieldset>
        <div id="buttons">
          <input class="but" type="submit" value="가입하기">
          <input class="but" type="reset" value="취소">
        </div>
      </form>
    </div>           
  </body>
</html>
728x90
반응형
728x90
반응형

문제 1

현재 시간을 받아오는 코드를 작성하시오

 

▶ 코드

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #container {
            text-align: center;
            margin-top: 30px;
        }
        .time {
            color: blue;
            font-size: 20px;
        }
    </style>
</head>

<body>
    <div id="container">
        <div class="t">현재 시각 <span class="time"></span></div>
    </div>
</body>

</html>
<script>
    setInterval(now, 1000);
    function now() {
        var time = new Date();
        var obj = document.querySelector('.time');
        obj.innerHTML = time.toLocaleTimeString(); //time 클래스에 직접 값을 넣는다.
    }
</script>

 

 

▶ 출력 결과

 

 

 

 

문제 2

문제 1을 응용하여 팝업 이벤트를 가진 버튼을 추가하여 코드를 작성하시오.

 

▶ 코드

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #container {
            text-align: center;
        }
        button {
            padding: 10px;
            margin-top: 30px;
        }
    </style>
</head>

<body>
    <div id="container">
        <button onclick="popTime()">현재 시간 보기</button>
    </div>
</body>

</html>
<script>
    function popTime() {
        window.open("script1.html", "time", "width=500px, height=200px, left=800px, top=300px");
        // 여러 개 뜨는 걸 방지
    }
</script>

 

 

▶ 출력 결과

  • 버튼을 누르면 해당 창이 팝업으로 나온다.

 

 

728x90
반응형
728x90
반응형

문제

해당 배열의 내용을 테이블로 출력하시오.

    var arr = [
        { name: '홍길동', java: 90, oracle: 95, html: 85, addr: '서울' },
        { name: '옥한빛', java: 76, oracle: 80, html: 70, addr: '인천' },
        { name: '귀살대', java: 81, oracle: 75, html: 80, addr: '부산' },
        { name: '김철수', java: 87, oracle: 99, html: 98, addr: '제주도' },
        { name: '유재석', java: 85, oracle: 85, html: 90, addr: '서울' }
    ];

 

 

▶ 코드

<script>
    var arr = [
        { name: '홍길동', java: 90, oracle: 95, html: 85, addr: '서울' },
        { name: '옥한빛', java: 76, oracle: 80, html: 70, addr: '인천' },
        { name: '귀살대', java: 81, oracle: 75, html: 80, addr: '부산' },
        { name: '김철수', java: 87, oracle: 99, html: 98, addr: '제주도' },
        { name: '유재석', java: 85, oracle: 85, html: 90, addr: '서울' }
    ];

    document.write("<table><tread>");
    document.write("<tr><th>이름</th><th>주소</th><th>자바</th><th>오라클</th><th>HTML</th></tr>");
    document.write("</thred><tbody>");
    for (var i = 0; i < arr.length; i++) {
        document.write("<tr><td>" + arr[i].name + "</td><td>" + arr[i].addr + "</td>" + "</td><td>"
            + arr[i].java + "</td>" + "</td><td>" + arr[i].oracle + "</td>" + "</td><td>" + arr[i].html + "</td></tr>");
    }
    document.write("</tbody></table>");
</script>
// 위 코드를 보기 편하게 정리한 코드
<script>
    document.write("<table><tread>");
    document.write("<tr>");
    document.write("<th>이름</th>");
    document.write("<th>주소</th>");
    document.write("<th>자바</th>");
    document.write("<th>오라클</th>");
    document.write("<th>HTML</th>");
    document.write("</tr></tread><tbody>");
    for (var i = 0; i < arr.length; i++) {
        document.write("<tr>");
        document.write("<td>" + arr[i].name + "</td>");
        document.write("<td>" + arr[i].addr + "</td>");
        document.write("<td>" + arr[i].java + "</td>");
        document.write("<td>" + arr[i].oracle + "</td>");
        document.write("<td>" + arr[i].html + "</td>");
        document.write("</tr>");
    }
    document.write("</tbody></table>");
</script>
    <style>
        table, tr, th, td {
            border: 1px solid black;
            border-collapse: collapse;
            padding: 15px;
            text-align: center;
        }
    </style>

 

 

▶ 출력 결과

 

 

 

728x90
반응형
728x90
반응형

문제

주어진 코드를 이용하여 버튼을 누르면 텍스트가 나오고, 버튼을 다시 누르면 텍스트가 사라지게 만드시오.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>  
</head>
<body>
  <div class="obj">
    <div class="text">JAVASCRIPT 노잼</div>
    <button onclick="hide()">감추기</button>
  </div>
  <button class="btn" onclick="show()" style="display : none;">다시호출</button>
</body>
</html>
<script>
  // show();
  function hide(){
    var obj = document.querySelector('.obj');
    obj.style.display = 'none'; 
    var btn = document.querySelector('.btn');
    btn.style.display = 'block';
    
  }
  function show(){
    var obj = document.querySelector('.obj');
    obj.style.display = 'block'; 
    var btn = document.querySelector('.btn');
    btn.style.display = 'none';
  }
</script>

 

 

 

 

 

코드

	<style>
        #item {
            position:relative;
            width:500px;
            height:auto;
            padding:15px 20px;
            margin:auto;
            position: relative;
        }
        button {
            background-color:rgba(255,255,255,0.7);;
            padding:5px;
            border:1px solid #ccc;
            font-size:0.8em;			
        }
        .detail {
            width:400px;
            text-align:left;			
            line-height:1.8;
            display:none;
        }
        .btn {
            position: absolute;
            left: 30px;
            bottom: 30px;
        }
	</style>
<body>
    <div id="item">
        <img src="../img/flower.jpg" alt="">
        <button class="btn" onclick="show()">상세 설명 보기</button>
        <div id="desc" class="detail">
            <h4>등심붓꽃</h4>
            <p>북아메리카 원산으로 각지에서 관상초로 흔히 심고 있는 귀화식물이다. 길가나 잔디밭에서 흔히 볼 수 있다. 아주 작은 씨앗을 무수히 많이 가지고 있는데 바람을 이용해 씨앗들을 날려보내거나,
                뿌리줄기를 통해 동일한 개체들을 많이 만들어 냄으로써 번식한다. </p>
            <button onclick="hide()">상세 설명 닫기</button>
        </div>
    </div>
</body

 

<script>
    function show() {
        var btn = document.querySelector('.btn');
        var desc = document.querySelector('#desc');
        desc.style.display = "block";
        btn.style.display = "none";
    }

    function hide() {
        var btn = document.querySelector('.btn');
        var desc = document.querySelector('#desc');
        desc.style.display = "none";
        btn.style.display = "block";
    }
</script>
  • btn2 클래스에 none 속성을 주지 않아도 desc를 감추면 버튼도 같이 감춰진다.

 

 

 

▶ 함수 안을 간단하게 수정할 수 있다.

    function show() {
        var desc = document.querySelector('#desc').style.display = "block";
        var desc = document.querySelector('#desc').btn2.style.display = "block";
    }
728x90
반응형

+ Recent posts