190624_Day51


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>이미지 테스트</title>
    <script type="text/javascript">
        function imageChange2(imageName) //자바 클래스와 등가, 자바스크립트 함수는 일급 객체 , 고로 메소드안에 메소드도 가능하다!
        {
            console.log('img3의 이미지 소스  = ' + document.img3.src);
            if(imageName == 'jpg'){
                document.img3.src = "ebi.jpg"                        
            }else if ( imageName == 'hak'){
                document.img3.src = "hak.png"                
            }else if ( imageName == 'gif'){    
                document.img3.src = "ebi.gif"
            }
        }
    </script>

</head>
<body>
    <h3>자바스크립트를 통한 이미지 조작</h3>
    <hr>
    <img 
        name = "img3"
        src = "ebi.gif"
        width="400" height="300"
        onmouseover="imageChange2('jpg')"
        onmouseout = "imageChange2('hak')"
        onmousedown = "imageChange2('gif')"
    >




</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>오늘의 날짜 출력</title>
   <script type="text/javascript">
      function printDate(){
          var now = new Date();//now: 현재 날짜의 모든 정보가 저장.
          var dayStr=['일','월','화','수','목','금','토'];
          //dayStr의 자료형? Array배열!!

          var dayStr='일월화수목금토';  
          //          0123456
          //dayStr의 자료형? String문자열!!


          var year = now.getFullYear();
          var month = now.getMonth()+1;//1월~12월 :0~11 
          var date = now.getDate();
          var h = now.getHours();
          var m = now.getMinutes();
          var s = now.getSeconds();
          var day = now.getDay();//일요일~토요일 (0~6)
          /*
          document.write(year+'년 '+month+'월 '+date+'일 '+
                  h+'시 '+m+'분 '+s+'초 ('+dayStr[day]+'요일)');

          document.write('<br>'+year+'년 '+month+'월 '+date+'일 '+
                  h+'시 '+m+'분 '+s+'초 ('+dayStr.substr(day,1)+'요일)');

          document.write('<br>'+year+'년 '+month+'월 '+date+'일 '+
                  h+'시 '+m+'분 '+s+'초 ('+dayStr.charAt(day)+'요일)');
          */

          var str=year+'년 '+month+'월 '+date+'일 '+
                   h+'시 '+m+'분 '+s+'초 ('+dayStr.charAt(day)+'요일)';

          var d1 = document.getElementById('d1');
          //d1의 자료형? Element ---> 속성 innerHTML
          d1.innerHTML = str;        
          setTimeout('printDate()', 1000);
          //1초후에 printDate()호출

      }//printDate
   </script>
</head>

<!-- today_print.html -->
<body onload = "printDate()">
<!--  
    body 엘리먼트의 내용이 브라우저에 전체 출력 되었을 때 실행될것 onload
 -->
    <H3>오늘 날짜</H3>
    <hr>
<!-- 
    <script type="text/javascript">
    var now = new Date();
    var dayStr = ['일','월','화','수','목','금','토'];

    var dayStr = '일월화수목금토';            

    var year = now.getFullYear();
    var month = now.getMonth();
    var date = now.getDate();
    var h = now.getHours();
    var m = now.getMinutes();
    var s = now.getSeconds();
    var day = now.getDay();

    document.write(year + '년' + month + '월' + date + '일' + 
                h + '시' +  m + '분' +  s + '초 (' + dayStr[day] + ')');
    document.write('<br>' + year + '년' + month + '월' + date + '일' + 
            h + '시' +  m + '분' +  s + '초 (' + dayStr.substr(day,1) + ')');
    document.write('<br>' +year + '년' + month + '월' + date + '일' + 
            h + '시' +  m + '분' +  s + '초 (' + dayStr.charAt(day) + ')');
    //day가 요일 일(0) ~ 토(1)
</script>
 -->
     <div id="d1"></div>



</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>회원가입 폼</title>
    <script type="text/javascript">
        /* 
            등록 버튼 클릭시 validCheck() 호출 -> 유효성 검사

            1. 아이디, 비번, 비번확인, 이름, 주민, 주소에 대한 빈값 체크
                -> 빈값일 때 입력 메시지 (alert) 출력
            2. 비번과 비번확인 일치 체크
            3. 주민번호의 숫자값과 자릿수 체크'
            4. 직업을 선택했는지 체크

            => 1~4 체크가 잘 되었을 때 welcom.html 페이지로 이동!
            => <form>태그의 속성 action에 명시된 url이동! -> submit()함수 사용
            => document.form명.submit();
        */
        function validCheck()
        {
            var f = document.joinForm;
            var id = f.id.value;
            var pass = f.pass.value;
            var pass2 = f.pass2.value;
            var name = f.name.value;
            var ssn1 = f.ssn1.value;
            var ssn2 = f.ssn2.value;
            var phone1 = f.phone1.value;
            var phone2 = f.phone2.value;
            var phone3 = f.phone3.value;
            var addr = f.addr.value;
            var job = f.job.value;
            // pass, pass 2 name ssn1 ssn2 phone1 2 3 addr job
            if(id == '')
            {
                alert("입력 안된 값이 있어요!");
                f.id.focus();
            }else if(pass == '' || pass2 == ''){
                alert("비번 확인!");
                f.pass.focus();
            }else if (pass != pass2)
            {
                alert("비밀번호 불일치");                    

            }else if(name == ''){
                alert("이름 확인!");
                f.name.focus();
            }else if(ssn1 == '' || ssn2 == ''){
                alert("주민번호 확인!");
                f.ssn1.focus();
            }else if (isNaN(ssn1) || isNaN(ssn2) || ssn1.length != 6 || ssn2.length != 7){
                alert("올바르지 않은 주민번호!");
                f.ssn1.value = '';
                f.ssn2.value = '';
                f.ssn1.focus();
            }else if(phone1 == '' || phone2 == '' || phone3 == ''){
                alert("휴대폰 번호 확인!");
                f.phone1.focus();
            }else if(addr == '' ){
                alert("주소 확인!");
                f.addr.focus();
            }else if(job == '==선택==' ){
                alert("직업  확인!");
                f.job.focus();
            }else{
                return true;
                //submit 버튼 클릭시 action속성에 명시된 url이동
            }
            return false; //submit실행 x
        }

        function juminMove()
        {
            console.log('ssn1의 입력값>>>'+ 
                    document.joinForm.ssn1.value);
            if(document.    joinForm.    ssn1.        value.length == 6)
            //자료형 document form 엘리먼트 input엘리먼트 string
                {
                    document.joinForm.ssn2.focus();
                }
        }
    </script>
</head>
<body>

  <center>
  <h3>회원가입폼</h3>
 <form name = "joinForm" action = "welcome.html">
  <table  cellpadding="5" bgcolor="eeeeee">
    <tr align="right">
        <td>I D:</td>
        <td><input type="text" name="id" > 
            <input type="button" value="중복확인" tabindex="-1"> 
            <!-- tabindex로 바로 tab으로 넘어갈 수 있다.  -->
        </td>
        <!-- 
             <input>태그의 속성
         readonly    ===> 읽기전용(쓰기금지)  : 자바 setEditable(false)
         disabled    ===> 비활성화                   : 자바 setEnabled(false)
         -->
    </tr>
    <tr>
        <td>비 번:</td>
        <td><input type="password" name="pass"> </td>
    </tr>
    <tr>
        <td>비번확인:</td>
        <td><input type="password" name="pass2"></td>
    </tr>
    <tr>
        <td>이 름:</td>
        <td><input type="text" name="name"></td>
    </tr>
    <tr>
        <td>주민번호:</td>
        <td><input type="text" name="ssn1" size="6"
                   maxlength="6" onkeyup = "juminMove()">
             -
            <input type="password" 
                   name="ssn2" 
                   size="7"
                   maxlength="7">
        </td>
    </tr>
    <tr>
        <td>전화번호:</td>
        <td><input type="text" name="phone1" size="4"> -
            <input type="text" name="phone2" size="4"> -
            <input type="text" name="phone3" size="4">
        </td>
    </tr>
    <tr>
        <td>주소</td>
        <td><input type="text" name="addr"></td>
    </tr>
    <tr>
        <td>직업</td>
        <td>
             <select name="job">        
                <option >==선택==</option>      
                <option >학생</option>
                <option>공무원</option>
                <option>언론/출판</option>
                <option>군인/경찰</option>
                <option>일반사무직</option>
                <option>영업직</option>
                <option>기술/전문직</option>
                <option>보건/의료</option>
                <option>자영업</option>
                <option>주부</option>
                <option>기타</option>
             </select>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="center">
           <!-- <input type="submit" value="등록"> -->
           <button type = "submit" onclick = "return validCheck()">등록</button>
           <!-- <input type="reset" value="취소"> -->
           <button type="reset">취소</button>
        </td>        
    </tr>
    </table>
   </form> 
  </center>
</body>

</html>

정규식(정규표현식) 테스트( RegularExpression )

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>정규식 테스트</title>
</head>
<body>
    <h3>RegExp 테스트</h3>
    <script type="text/javascript">
        var str = '  script ' ; // 맨 앞 공백 3개, 뒤에 공백 2칸
        //앞 뒤 공백 제거하기 
        str.trim();
        document.write(str + " " + str.trim().length);

        var str = '  script ' ;
        //trim 쓰지 말고...
        document.write("<br>" + str + " " + str.replace(' ', '').length);
        //맨 앞에 빈칸만 없애주네...
        document.write("<br>" + 'str의 문자열 길이 = ' +str.replace(/ /g,'').length);

        document.write('<br>str의 문자열길이(replace)='+
                  str.replace(/(^\s+)|(\s+$)/g,'').length);
        //패턴 검사 !! (데이터 검사 - 문자, 숫자, 길이)
        //횟수 관련 부호 : ?:(0,1)        *:( 0 ~ 무 한 대 )        +:( 1 ~ 무한대 )

        var a = ' '; var b = []; var c = {}; var d = /표현식/;
        var e = new RegExp("패턴");

        // a의 자료형 String
        // b의 자료형 배열
        // c의 자료형 JSON{키,밸류, 키,밸류 ...}
        // d,e의 자료형 RegExp객체 

        var str2 = 'abcA';
        // str2 영문자 검사!
        var regExp1 = /^[a-zA-Z]+$/
        // /하고 ^ 사이에 공백 있으면 안되네...
        // var regExp1 = /패턴/플래그;
        // 패턴내의 '^' : 문장의 시작
        // $ : 문장의 끝
        // 참고) [^abc] ==> a, b ,c 문자를 제외하고~
        //        ^[abc] ==> a 또는 b 또는 c문자로 시작하는 ~ 

        document.write('<br> 영문자 검사' + regExp1.test(str2) )
        //str2문자열을 regExp1패턴에 검사해서 일치하면 true를 리턴!

        var str3 = '12345';
        var regExp2 = new RegExp('^[\\d]+$'); // ^[\d]+$ 에서 \d 가 0~9 
        // 따옴표 때문에 \\d 쓰는것.
        document.write('<br>숫자 검사 : ' + regExp2.test(str3));

        var jumin1 = '960202';

        var juminPattern1 = /^[\d]{6}$/;
        // {m, n} : m:최소값 n:최대값
        // {3, 6} : 횟수 3이상 6이하, {6} : 6회, {3,} : 3회 이상
        document.write('<br>주민번호 앞자리 검사 : ' +
                        juminPattern1.test(jumin1) );    

        // 문제 ) 아이디를 검사 할 수 있는 패턴 idPattern을 정의하시오.
        // idPattern -> regExp객체
        // 아이디 조건 => 8~12자리, 영문자와 숫자조합, 영문자 시작

        var idcheck = 'asdfasdf';
        var idcheck = 'asdfasdf12';
        var idcheck = 'gil123df';

        var idPattern2 = new RegExp('^[a-zA-Z]{1}[a-zA-Z\\d]{7,11}$');

        document.write('<br>' + idcheck + ' 아이디 패턴을 검사! ' + idPattern2.test(idcheck));

        //문제 ) 비밀번호 검사 (5자리)

        var pass = 'aa!s5';
        var passPattern2 = new RegExp('/(?=.*\\d)(?=.*[~`!@#$%\^&*()-+=])(?=.*[a-zA-Z]){5}$/');

        document.write('<br>' + pass + ' 비밀번호 패턴을 검사! ' + passPattern2.test(pass));

    </script>
</body>
</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>새창열기테스트</title>
  <script>
     function win_open(){
        //window == 브라우저
        //window.open('새창에보여질URL주소','타겟명','윈도우(=브라우저)특성');
        //window.open(); 빈탭열기
        //window.open('child_window.html','_self'); 현 브라우저에 명시된 URL열기
        window.open('child_window.html','childWin',
                'toolbar=yes,location=0,status=1,menubar=1,'+
                'scrollbars=no,resizable=yes,width=300,height=200,'+
                'top=100,left=100');    
     }
  </script>
</head>
<!-- window_openTest.html -->
<body>
 <h3>새창열기테스트</h3>
 <hr>
 <form name="parentForm">
     이름: <input type="text" name="username">
 </form>
 <button onclick="win_open()">새창열기</button>


</body>
</html>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>자식창</title>
    <script type="text/javascript">
        // 부모창의 username값 얻어오기
        // 부모 윈도우창에 대한 레퍼런스 : opener( ==open window!! )
        // opener.document == 부모창의 문서, document.~ == 현재 문서
        //alert('부모폼의 이름 : ' + opener.document.parentForm.username.value);
        function initForm(){
            //alert('부모폼의 이름:'+ opener.document.parentForm.username.value);
            document.childForm.username.value
            = opener.document.parentForm.username.value;
          }

          function toParent(){
            opener.document.parentForm.username.value
              = document.childForm.username.value;
          }

    </script>
</head>
<!-- child_window.html -->
<body onload="initForm()">
   <h3>child_window(자식창)</h3>
   <hr>
   <form name="childForm">
        이름: <input type="text" name="username">
   </form>
   <br>
   <button onclick="toParent()">이름전달(to부모창)</button>
</body>

</html>

'클라우드 기반 웹 개발자 과정 공부 > JS' 카테고리의 다른 글

190621_Day50 <JavaScript4>  (0) 2019.06.21
190620_Day49 <JavaScript3>  (0) 2019.06.20
190619_Day48 <JavaScript - 1,2>  (0) 2019.06.19

190621_Day50

<자바스크립트>

  • 웹브라우저에서 실행되는 프로그램이다!!

  • HTML문서내에서 실행(html에 종속적이다,브라우저에서 실행된다!!)

  • HTML문서(정적페이지)
    ---> JavaScript적용 (동적페이지)

  • HTML문서를 통해 입력된 데이터를 얻어오고
    데이터에 대한 유효성 검사를 할 때 사용.

  • HTML문서에 대한 조작(태그,속성,스타일)!!

    ※결론) 자바스크립트를 왜(어디서) 사용하는가?

    - 문서 조작 (태그와 속성, CSS)
       ==> 조작에 필요한 데이터가 외부에 존재한다면(현재HTML없을시) Ajax를 사용!!
    - 유효성 검사 (서버에게 데이터를 보내기 전에 검사)   

===========================================================
<<JavaScript와 Java비교>>

  1. JavaScript: 클라이언트(사용자,브라우저) 스크립트 : 브라우저에서 실행!! JSP(Java) : 서버 스크립트 : JVM에서 실행!!

  2. JavaScript의 위치
    ---> HTML문서내에 포함되어서 실행.

     (HTML문서내의 어떤 위치라도 정의 가능)
    <html>
       <head>
          <script>
                        프로그램영역!!
             ----> 변수선언, 함수(function)정의                       
          </script>
       </head>
       <body>
          <script>
              프로그램영역!!
               ----> 함수 호출
          </script>
       </body>
    </html> 
  1. 자료형을 선언, 정의하지 않는다!! ★

    자바case)
       String name="홍길동";
              name="길라임";
              name=3000;   (X)
    
    자바스크립트case)
       String name="홍길동"; (X) 에러발생!!
          name="홍길동"; (O) 자료형 선언하지 않고 사용!!
    
      var su;  ---> 변수선언      
       su=2000;        ---> number타입
       su="김주원";     ---> String타입 
                            //대입되는 데이터에 따라 자료형이 변환됨
       su=true;        ---> boolean타입
       su= new Date(); ---> Date타입

  2. 자바스크립트에서의 문자열(text) 표현
    ---> 작은 따옴표와 큰 따옴표를 구분 없이 사용!!

            ---> 전혀 차이가 없음.

    name1= "홍길동"; (O)
    name2= '길라임'; (O)
    name3= "김주원'; (X)

  3. 자바스크립트는 구분자, 종결자 역할을 하는 ';'을 생략하는 것이 가능.
    ==> 이유: 라인(줄바꿈)을 통해 서로 다른 문장을 구분하기 때문.

    name='길동'
    age=13
    ==> (O)

    name="라임" age=15
    ==> (X)

    name="주원"; age=17
    ==> (O)

  4. 자바스크립트 /(몫), %(나머지)

    10/5 ---> 2
    10%5 ---> 0

    10/3 ---> 3.33333333

          parseInt(3.33333333)  ---> 3

    10%3 ---> 1

  5. JavaScript내의 주석

    • Java와 동일

    • //설명문 : 라인주석
      /*

              설명문1
              설명문2
              설명문3

      */ : 블럭주석

    • HTML주석은

'클라우드 기반 웹 개발자 과정 공부 > JS' 카테고리의 다른 글

190624_Day51 <JavaScript5>  (0) 2019.06.24
190620_Day49 <JavaScript3>  (0) 2019.06.20
190619_Day48 <JavaScript - 1,2>  (0) 2019.06.19

190620_Day49

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>함수 테스트</title>
    <script type="text/javascript">
        function gildong()
        {
        alert('딩꼬~!');
        }
    </script>

    <script src = "myfun.js"></script>
    <script type = "text/javascript">
            function vicky()
            {
                alert("비키는 용용이의 꼬집을 응원합니다.");
                alert("su1 + su2 = " + su1 + su2);
                alert("su3 = " + su3);
                alert("su4 = " + su4);
            }

    </script>

</head>

<!-- fun_test.html -->
<body>
    <h3>함수테스트</h3>
    <input type="button" onclick="gildong();" value = "딩듀호출">

    <button onclick="gildong()">딩꼬 호출</button>

    <a href="javascript:poo()">딩꼬 호출</a>

    <button onclick = "vicky();">비키 호출</button>
</body>
</html>
//myfun.js <script>태그 사이에 들어가는 
//변수선언 초기화 함수정의

su1 = 11; //전역변수
var su2 = 22; //전역변수

function poo() 
{
    su3 = 33; //전역변수
var    su4 = 44; //지역변수! (poo()함수 내에서만 사용가능)

    alert ( "진푸~!" );
    alert ( 'su2 = ' + su2 + ", su 4 = " + su4 + 'su3 = ' + su3);
    //su1, su2, su3, su4 모두 사용 가
}

<배열>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>배열테스트</title>
</head>
<!-- array_test.html -->
<body>
  <h3>배열Array 테스트</h3>
  <hr>
  <script type="text/javascript">
     //배열 객체 생성
     var str = new String("문자열");
     var myArry = new Array(5);//myArry[0]~myArry[4]할당
     document.write("myArry배열크기 = "+ myArry.length );

     //배열안에 데이터 입력
     myArry[0]=11;
     myArry[1]=22;
     myArry[2]=true;
     myArry[3]="홍길동";
     myArry[4]=new Date();

     myArry[5]='길라임';
     myArry[6]=3.14;
     //결론: 자바스크립트 배열은 여러 자료형을 입력받을 수 있고
     //     가변길이 배열이다!!

     document.write('<br>데이터입력후 myArry배열크기= '+
                      myArry.length)

     //전체 데이터 출력
     for(var i=0; i<myArry.length; i++){//배열 인덱스
        document.write('<br>myArry['+i+']='+myArry[i]); 
     }

     document.write('<hr>');
     //정해진 데이터(1,2,3,4,5)를 배열에 저장.
     //var myArry2={1,2,3,4,5};//에러: {}데이터는 JSON에서 예약!!
     //JSON ---> JavaScript Object Notation : 자바스크립트 객체를 표현하는 방법
     //JSON형식)
     //  {key:value,  key:value, ....}
     //  자바의 Map과 같다.
     // key==> 변수의 역할,  value==> 저장데이터   

     var person = {name:'홍길동', age:13, job:'학생',
                   etc:[100,200,300] };
     //사용법:  (JSON)변수명.key명
     document.write("<br>이름: "+ person.name);
     document.write("<br>나이: "+ person.age);
     document.write("<br>직업: "+ person.job);

     //etc의 두번째 데이터를 화면 출력하시오.
     //person.etc == 배열
     document.write('<br>etc의 데이터갯수: '+ person.etc.length);
     document.write('<br>etc두번째데이터: '+ person.etc[1]);


     document.write('<hr>');

     var myArry2=[1,2,3,4,5];//배열데이터는 []에 입력!!

     for(var i=0; i<myArry2.length; i++){//배열 인덱스
         document.write('<br>myArry2['+i+']='+myArry2[i]); 
     }

     document.write('<hr>');
     var myArry3= new Array(6,7,8,9,10);

     for(var i=0; i<myArry3.length; i++){//배열 인덱스
          document.write('<br>myArry3['+i+']='+myArry3[i]); 
     }

     document.write('<hr>');
     var fruits=new Array();

     //데이터 입력
     fruits.push('사과');
     fruits.push('딸기');
     fruits.push('복숭아');

     //데이터 삭제(맨 마지막 요소부터)
     fruits.pop();
     fruits.pop();

     fruits.push("리치");
     fruits.push("파인애플");
     fruits.push("수박");
     //사과,리치,파인애플,수박
     // 0   1    2     3

     //fruits.slice(startIdx,endIdx);
     document.write('<br>fruits='+fruits);
     document.write('<br>fruits.slice(1)='+fruits.slice(1));
     document.write('<br>fruits.slice(1,3)='+fruits.slice(1,3));
     document.write('<br>fruits.join("^")='+fruits.join("^"));
     //join()메소드: 특정문자를 포함한 새로운 문자열 생성
     //결과값: "사과^리치^파인애플^수박"

     document.write('<br>fruits.reverse()='+fruits.reverse());
     document.write('<br>fruits.sort()='+fruits.sort());


     for(var i=0; i<fruits.length; i++){//배열 인덱스
           document.write('<br>fruits['+i+']='+fruits[i]); 
     }



  </script>

</body>
</html>

<플러그인 설치 방법>

  1. 설치된 eclipse 폴더
    • plugins폴더
    • features폴더
      • 두 폴더에 필요한 jar파일 복사!
  2. Help메뉴
    • intall new software
    • add버튼
    • name설정과 location위치
  3. help메뉴
    • Eclipse Marketplace
    • 검색

<자바스크립트, jQuery 관련 플러그인 설치 - Tern 플러그인>

​ 2번 방법으로 설치한다!(http://marketplace.org)

http://oss.opensagres.fr/tern.repository/1.2.0

​ 설치후 재시작! 그리고 세팅~!

프로젝트 적용!

  1. 적용할 프로젝트명 오른쪽 클릭!
    1. Configure
    2. Convert to Tern Project
  2. 프로젝트 Properties
    • JavaScript
      • Modules
        ==> Browser, CKEditor, jQuery체크

이후 깃 세팅, 깃헙 사용 방법, 세미프로젝트2 학습함.

'클라우드 기반 웹 개발자 과정 공부 > JS' 카테고리의 다른 글

190624_Day51 <JavaScript5>  (0) 2019.06.24
190621_Day50 <JavaScript4>  (0) 2019.06.21
190619_Day48 <JavaScript - 1,2>  (0) 2019.06.19

190619_Day48

HTML 마지막에 있는 JavaScript에 이어서

  1. 실행

    JavaScript: 클라이언트(사용자,브라우저) 스크립트 : 브라우저에서 실행!!

    JSP(Java) : 서버 스크립트 : JVM에서 실행!!

  2. JavaScript의 위치
    ---> HTML문서내에 포함되어서 실행.

     (HTML문서내의 어떤 위치라도 정의 가능)
     <html> 
      <head>
         <script>
                        프로그램영역!!
             ----> 변수선언, 함수(function)정의                       
          </script>
       </head>
        <body>
    
          <script>
                          프로그램영역!!
               ----> 함수 호출
          </script>
    
       </body>
    </html> 
  1. 자료형을 선언, 정의하지 않는다!! ★

    자바case)
    String name="홍길동";

          name="길라임";
          name=3000;   (X)

    자바스크립트case)
    String name="홍길동"; (X) 에러발생!!

         name="홍길동"; (O) 자료형 선언하지 않고 사용!!
  var su;  ---> 변수선언      
      su=2000;        ---> number타입
      su="김주원";     ---> String타입 
                           //대입되는 데이터에 따라 자료형이 변환됨
      su=true;        ---> boolean타입
      su= new Date(); ---> Date타입
  • document.writeln("~"); 해도 new라인이 아닌 한칸만 떨어졌다.
  • new line = White Space, 브라우저에 출력됨으로 한칸으로 출력 ( 브라우저 출력 )
  • 한칸 띄고 싶다면 < br > 이라는 html 태그 이용해서!
  1. 자바스크립트에서 문자열 ( text ) 표현
  • 작은 따옴표와 큰 따옴표 구분 없이 사용!

    • ' ' 과 " " 은 전혀 차이가 없음.

      name1 = "기묜진"; (O)
      name1 = '기묜진'; (O)
      name1 = "기묜진'; (X)
  • 문제

    • 브라우저에 "여기는 남부터미널 입니다"를 출력하시오.

          document.writeln('<font color = skybule>여기는 "남부터미널" 입니다.<br>'); 
          document.writeln("<font color = orange>여기는 '남부터미널' 입니다.<br>"); 
          document.writeln("<font color = purple>여기는 \"남부터미널\" 입니다."); 
    • 데이터 10과 3에 대한 사칙연산 결과를 화면에 출력하시오.

          document.write( '<br>su1 + su2 = ' + (su1 + su2 ) );
          document.write( '<br>su1 - su2 = ' + (su1 - su2 ) );
          document.write( '<br>su1 * su2 = ' + (su1 * su2 ) );
          document.write( '<br>su1 / su2 = ' + (su1 / su2 ) ); 
          // 결과값이 소수점 이하까지 계산 되네, 정수 실수 자료형 선언이 없었기 때문, 3만 나오게 하려면 
          document.write( '<br>parseInt(su1 / su2) = ' + parseInt(su1 / su2 ) ); 
          document.write( '<br>su1 % su2 = ' + (su1 % su2 ) );
  1. 자바스크립트는 구분자, 종결자 역할을 하는 ';'을 생략하는 것이 가능

    • 이유 : 라인(줄바꿈)을 통해 서로 다른 문장을 구분하기 때문

      name = '용딩'
      age = 13
      // 이렇게 세이콜론 없이 쓰는 것 가능 하지만 쓰는 것을 권장
      
      name = '용딩' age = 13
      //이렇게 한줄로 몰아쓰는건 안된다!
      
  2. 문자열 비교

    자바Case)
    "java".equals("JAVA") => false 문자열 내용 비교
    "java" == "JAVA"      => false 메모리 주소 비교
    자바스크립트Case)
    "javascript".equals("JAVASCRIPT") => X 에러발생
    "javascript" == "JAVASCRIPT" => false 문자열 내용 비교

    koxo.com 참조

  3. '==' 연산자 '==='연산자

    • '==' 연산자
      • 등가 연산자
      • 데이터 내용만 비교 (자동 형변환 발생)
    • '==='연산자
      • 등가연산자 (엄격한 비교연산자)
      • 자료형 비교
      • 내용 비교
    • 관련연산자
      • != (비교연산자)
      • !==(엄격한 비교연산자)
  4. 조건문

       if(조건식){
              조건식의 결과가 참일 때 실행할 문장;
       }
       --->실행할 문장이 한개였을때 영역괄호{}는 생략가능!!
    
       if(조건식){
              조건식의 결과가 참일 때 실행할 문장;
       }else{
              조건식의 결과가 거짓일 때 실행할 문장;
       }
    
    
  if(조건식1){
         조건식1의 결과가 참일 때 실행할 문장;
  }else if(조건식2){
         조건식1의 결과가 거짓이고!!
         조건식2의 결과가 참일 때 실행할 문장;
  }else{
         조건식1,2의 결과가 거짓일 때 실행할 문장;
  }

   -  ※ 자바와의 차이점
          if(조건식 ==> boolean, 숫자, 객체){

          }

      숫자: 0인 수(false), 0아닌 수(true)로 구분
      객체: 브라우저에서 지원되는 객체인지 아닌지 판별.     

     ----> 변수에 값이 존재하는지 판단.

     - 존재하는 객체(문자열, 브라우저가 지원하는 객체)  ---> true

     - null, undefined                        ---> false

     ​    undefined : 선언은 되어있는데 초기화 되지 않은 변수    



문제1)브라우저에 1~5까지 출력하시오. (for문 사용)

```javascript
        for(var i = 1; i < 6; i++){
            document.write(i + '&nbsp');
        }

문제2) 5에서 1까지 브라우저에 출력하시오 (for문)

        for(var i = 5; i > 0; i--){
            document.write(i + '<br>');
        }

문제3 브라우저에 출력하시오.

        for(var i = 3; i < 13; i += 3){
            document.write(i);
            if(i < 10)document.write(", ");
        }

문제4 구구단 3단을 출력하시오. (for문 사용)

        for(var i = 1; i < 10; i++){
            document.write("<br>3 X " + i + " = " + ( 3 * i ));

        }

문제5 구구단(2단~9단)을 브라우저에 출력하시오. (조건:열을 맞추어 출력, 다중for문 사용)

        document.write("<pre>");
        for(var j = 1; j < 10; j++){
            for(var i = 2; i < 10; i++){
                    document.write( i + " x " + j + " = " + ( i * j ) + "\t");
            }
            document.write("<br>");
        }
        document.write("</pre>");
   document.write('<table cellpadding=10>')
   for(i=1; i<10; i++){//기준: 곱하는 수 1~9        9번반복!!
         document.write('<tr>');//9개의 <tr>태그 생성
       for(dan=2; dan<10; dan++){//단수: 2~9      8번반복!!
             //9*8=72 ---> 72개의 <td>태그 생성
         document.write('<td>'+dan+'*'+i+"="+(dan*i)+'</td>');
       }
       document.write('</tr>');//9개의 </tr>태그 생성
   }
   document.write('</table>')

대화상자~!

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>대화상자 테스트</title>
</head>
<!-- dialog_test.html -->
<body>
    <h3>대화상자테스트</h3>
    <hr>

    <script type="text/javascript">
        //메시지 대화상자 : alert(출력할 데이터)
        alert("딩푸 등장!");

        a = 10;
        b = 20;
        document.write( 'a + b =' + ( a + b ) ); // a와 b를 더한 값을 확인 : 브라우저 화면 출력
        alert( 'a+b =' + ( a + b ) ); // a와 b를 더한 값을 확인 : 메시지창 출력

        // 확인 대화상자 : confirm(메시지) ===> 삭제전 '확인'에서 많이 사용
        // alert( confirm() ) ; // 확인, 취소, x버튼 => true, false, false
        if( confirm ('딩듀 푸푸하셨습니까?') ){
            alert('시원하게 하셔서 다행입니다. 내일도 시원하게 하세요~!');
        }else{
            alert('조금 이따 하시겠네요 ㅋ');
        }

        //입력 대화상자( 잘 사용 안함, 모양이 이상...)
        //prompt('출력할메시지');
        var many = prompt('딩듀가 하루에 쁀하는 횟수는?', '');

        if(many != null){
            if( many == '') // 빈값 체크 : str == '' 또는 str.length == 0
            {
                alert('횟수를 입력하세요!');
            }else{
                alert('[' + many + '] 번이라구요?' + '자는 시간에만도 그것보다는 더 합니다.')
            }
        }

    </script>
</body>
</html>

내장함수

  • 내장(기본) 함수 : 자주 사용되는 함수를 레퍼런스 없이 사용하게 하는 것

  • eval()

            var a = '100';
            var b = 100;
    
            document.write('a + b = ' + ( a + b ) );
            document.write('<br>eval(a) + b = ' + ( eval ( a ) + b ) );
    
            var v2 = '{ name: " 이딩듀 ", age : 1 }';
            var v3 = eval("(" + v2 +")");
            document.write('<br> 이름 = ' + v3.name);

    #등장한김에 잠시 배워보는 JSON

    ​ JavaScript Object Notation

    ​ JSON 형식 )

    var v = { key1 : value, key2 : value };
    ---
    var v = { name : "기묜진" , age : 2};
    //v 가 JSON
    document.write('<br>이름 = ' + v.name);
    //이렇게 쓴다!
  • isNan()

    • not a number
    • 숫자인지 여부 판별할때,
  • escape() / unescape()

    • 나중에는 안쓰게 됨.
    • 인코딩 디코딩
    • 특문 몇개 제외하고는 모두 16진수 문자로 바꾸어준다.
  1. 함수(메소드) 정의 ★★★

    • 자바Case

      void hello(String name, int age){}
      int hello(String name, int age){return 100;}
    • 자바스크립트Case

      function hello(name, age){}
      function hello(name, age){return 100;}
    • 함수형식

      function 함수명(){
      
      } //---> return; 생략가능
      
      function 함수명(변수명1, 변수명2){
          return "리턴데이터";
      }
    • 주의 ) 자바스크립트의 함수는 오버로딩을 지원 할까요?

      • 기본적으로 제공하지 않는다.

        function hello(){
            안녕!
        }
        hello(); //호출 -> 안녕!
        
        function hello(){
            신짜오!
        }
            //에러 발생 안함.
        hello(); //호출 -> 신짜오! 나옴, 같은 이름 함수 두 개 쓰면 앞에것 호출 불가!
        
        function hello(name){
            니하오!
        }
            //에러 발생 안함
        hello(); //호출 -> 니하오! , 함수명만 일치하면 파라메터 상관없이 호출됨 
        
        hello(); // 니하오!
        hello('나길동'); // 니하오!
        hello('나길동',130); // 니하오!
            //함수 호출시 매개변수(인자)의 갯수와 상관없이 함수명만 일치하면 호출 가능!
            //같은 영역(파일)에 동일한 이름의 함수가 여러개 존재하면 제일 아래에 있는 함수로 overwrite됨!

        예제. myFun_test.html

        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
        <title>사용자 정의함수</title>
        
            <script type="text/javascript">
            //함수정의
            function test(){
                alert('함수 테스트');
            }
        
            function hello(){
                alert('헬로~')
            }
        
            function hello( name ){
                alert('안녕, ' + name )
            }
        
            function hello( name, age ){
                alert('하이, ' + name + "!! \n 당신의 나이는 " + age + "살" )
            }
        
            function hello( name, age ){
                //undefined : 초기화 되지 않은 변수
                //null써도 되지만 undefined
                if(name == undefined) 
                alert('헬로');
                else if(age == undefined)
                alert('안녕, ' + name );
                else
                alert('하이, ' + name + "!! \n 당신의 나이는 " + age + "살" );
            }
        
            prompt("입력", "초기값", "딩딩","비키")
            </script>
        
        </head>
        <!-- myFun_test.html -->
        <body>
            <h3>사용자 정의함수 테스트</h3>
            <hr>
            <!--
                on~ 시작하는 속성 : 이벤트 속성 
                onclick = "자바스크립트 코드"
            -->
            <input type="button" value="test()호출" onclick="test();">
            <button onclick="hello();">hello() 호출</button>
            <button onclick="hello('딩듀');">hello(딩듀) 호출</button>
            <button onclick="hello('비키', 2);">hello(비키, 2) 호출</button>
        </body>
        </html>

'클라우드 기반 웹 개발자 과정 공부 > JS' 카테고리의 다른 글

190624_Day51 <JavaScript5>  (0) 2019.06.24
190621_Day50 <JavaScript4>  (0) 2019.06.21
190620_Day49 <JavaScript3>  (0) 2019.06.20

+ Recent posts