강좌 (9)

💻 Programming/웹프로그래밍

[jQuery] 1. jQuery 시작하기

jQuery란 무엇인가?

jQuery 는 빠르고 정확한 JavaScript Library 입니다. John Resig이라는 사람이 2006년에 만들었다고 하네요. Write less, do more. 이게 jQuery가 탄생한 이유입니다. 적은코드로 많은 일을 하는 것. 

jQuery 는 HTML 문서 traversing, event handling, animating, and Ajax interactions 을 단순화 시켜줍니다.

jQuery의 특징에는 다음과 같은 것들이 있습니다.

  • DOM 조작: Sizzle이라는 selector엔진을 이용해서 DOM 요소를 선택하거나, 검색하거나, 요소의 내용을 수정하는 작업을 용이하게 해줍니다. 

  • Event handling: HTML코드를 사용하지 않고 이벤트 처리를 할 수 있게 해줍니다. 

  • AJAX 지원 

  • 애니메이션 : 상당히 많은 애니메이션 효과를 제공합니다.

  • 가볍다 : 19KB 정도 밖에 안되는 매우 가벼운 라이브러리 입니다. ( Minified and gzipped ).

  • 다양한 브라우저 지원 : IE 6.0+, FF 2.0+, Safari 3.0+, Chrome and Opera 9.0+

  • 최신 기술 지원 : CSS3 selectors 와 basic XPath 문법을 지원합니다.

jQuery 설치하기

jQuery 설치하는 것은 어렵지 않습니다. 

  1. 최신버전 다운로드하기 : download jQuery  

  2. 다운로드한 최신버전의 jquery-x.y.z.min.js 파일을 프로젝트 경로 내에 넣어주세요, e.g. /jquery.

파일명에 min.js로 끝나는 버전은 최소화된 버전으로 불필요한 빈 줄이나 단어를 제외한 버전이라고 합니다.

 

 

jQuery 라이브러리 사용하기

 jquery 라이브러리 include하는 방법은 다음과 같습니다. 

<html>
<head>
<title>The jQuery Example</title>
   <script type="text/javascript" 
   src="/jquery/jquery-1.3.2.min.js"></script>
   <script type="text/javascript">
      // you can add our javascript code here 
   </script>   
</head>
<body>
........
</body>
</html>

jQuery 라이브러리 함수 호출하기

As almost everything we do when using jQuery reads or manipulates the document object model (DOM), we need to make sure that we start adding events etc. as soon as the DOM is ready.

If you want an event to work on your page, you should call it inside the $(document).ready() function. Everything inside it will load as soon as the DOM is loaded and before the page contents are loaded.

To do this, we register a ready event for the document as follows:

$(document).ready(function() {
   // do stuff when DOM is ready
 });

To call upon any jQuery library function, use HTML script tags as shown below:

<html>
<head>
<title>The jQuery Example</title>
   <script type="text/javascript" 
   src="/jquery/jquery-1.3.2.min.js"></script>
   
   <script type="text/javascript" language="javascript">
   // <![CDATA[
   $(document).ready(function() {
      $("div").click(function() {
        alert("Hello world!");
      });
   });
   // ]]>
   </script>

</head>
<body>
<div id="newdiv">
Click on this to see a dialogue box.
</div>
</body>
</html>

 

 

사용자 정의 스크립트 사용하기

custom.js 파일에 내가 정의한 기능을 따로 정의합니다.

/* Filename: custom.js */
$(document).ready(function() {
  $("div").click(function() {
 alert("Hello world!");
  });
});

다른 페이지에서 custom.js 파일내에 정의된 기능을 실행하고자 할때에는 이 파일을 추가하면 됩니다

<html>
<head>
<title>The jQuery Example</title>
   <script type="text/javascript" 
   src="/jquery/jquery-1.3.2.min.js"></script>
   <script type="text/javascript" 
   src="/jquery/custom.js"></script>
</head>
<body>
<div id="newdiv">
Click on this to see a dialogue box.
</div>
</body>
</html>

 

다른 라이브러리 동시 사용하기:

jQuery 를 다른 라이브러리와 함께 사용하게 되면 충돌가능성이 있을 수 있습니다. $ 기호를 다른 라이브러리에서도 사용할 수 있기 때문입니다.   

 

 $.noConflict() 메소드를 실행하면 $ 변수를 먼저 import한 라이브러리에 우선권을 넘기게 됩니다. jQuery에서 $는 단지 jQuery의 alias일 뿐이므로 $를 쓰지 않아도 전혀 문제될 것이 없습니다. 사용법을 한번 보시죠. 

// Import other library
// Import jQuery
$.noConflict();
// Code that uses other library's $ can follow here.

이 방법은 특히 .ready() 메소드의 기능과 쓰일때 강력하다고 하네요. jQuery의 $를 사용할 수 있게 해주기 때문이죠.  

사용법을 한번 보실까요? 

// Import other library
// Import jQuery
$.noConflict();
jQuery(document).ready(function($) {
// Code that uses jQuery's $ can follow here.
});
// Code that uses other library's $ can follow here.
DOM Element

 

 

 

 

Reference : http://www.tutorialspoint.com/jquery/jquery-overview.htm

 

 

 

 

 

웹애플리케이션을 개발할때 사용자의 브라우저가 무엇인지는 정말 중요한 요소이다. 만약 여러가지 브라우저에서 모두 정상적인 화면을 보여주려면 정말 많은 노력을 해야한다. 브라우저마다 화면에 보여지는 모습이 다를때가 많기 때문이다. 

오늘은 사용자의 브라우저가 무엇인지를 구분할 수 있게해주는 Navigator 객체에 대해서 알아보도록 하겠다.


Navigator 속성

네비게이터 객체의 속성은 아래와 같다. 

PropertyDescription
appCodeName브라우저 고유의 코드명에 대한 속성이다. 넷스케이프는 Netscape , 익스플로러는 Microsoft Internet Explorer 값을 가진다.
appVersion브라우저 버전, 언어, 호환성 등등의 정보를 갖는 속성이다.
language넷스케이프에서만 사용되는 속성이다. 언어코드를 두개의 케릭터로 갖는다. ko, en 처럼 말이다.
mimTypes[]클라이언트(브라우저)가 지원하는 모든 MIME 타입을 갖고있는 속성이다.역시 넷스케이프 전용이다.
platform[]브라우저의 플랫좀 정보를 갖는 속성이다."Win32" for 32-bit Windows operating systems
plugins[]브라우저에 설치된 모든 플러그인의 정보를 갖는 속성이다. 넷스케이프 전용이다.
userAgent[]코드명과 브라우저의 버전을 갖는 속성이다. 서버에서 클라이언트를 구분짓기위해 사용된다.

Navigator 메소드

다음은 Navigator에 특화된 메소드들입니다.

MethodDescription
javaEnabled()자바스크립트가 활성화된 클라이언트인지를 반환합니다. 브라우저에서 자바스크립트 실행을 금지했다면 false를 반환합니다.
plugings.refresh이 메소드는 새로 설치된 플러그인을 사용하도록 설정하고 모든 플러그인 목록에 추가합니다. Netscape only.
preference(name,value)서명된 스크립트가 넷스케이프의 속성값을 가져오거나 세팅할 수 있도록 해주는 메소드입니다. 두번째 인자가 없으면 getter의 역할을 하고 두번째 인자를 넣어주면 setter의 기능을 하게됩니다. Netscape only.
taintEnabled()데이타 tainting 의 활성화 여부를 참, 거짓으로 반환합니다. 


브라우저 구별하기

아래 소스를 브라우저 종류별로 테스트해보세요. 

<html>
<head>
<title>Browser Detection Example</title>
</head>
<body>
<script type="text/javascript">
<!--
var userAgent   = navigator.userAgent;
var opera       = (userAgent.indexOf('Opera') != -1);
var ie          = (userAgent.indexOf('MSIE') != -1);
var gecko       = (userAgent.indexOf('Gecko') != -1);
var netscape    = (userAgent.indexOf('Mozilla') != -1);
var version     = navigator.appVersion;

if (opera){
  document.write("Opera based browser");
  // Keep your opera specific URL here.
}else if (gecko){
  document.write("Mozilla based browser");
  // Keep your gecko specific URL here.
}else if (ie){
  document.write("IE based browser");
  // Keep your IE specific URL here.
}else if (netscape){
  document.write("Netscape based browser");
  // Keep your Netscape specific URL here.
}else{
  document.write("Unknown browser");
}
// You can include version to along with any above condition.
document.write("<br /> Browser version info : " + version );
//-->
</script>
</body>
</html>

 

 

 

Reference : http://www.tutorialspoint.com/javascript/javascript_browsers_handling.htm

 

 


JavaScript의 navigator 객체는 plugins 객체를 자식으로 갖고 있습니다. 이 객체는 배열의 구조를 가지고 있는데 브라우저에 설치되어있는 플러그인마다 각각 하나의 엔트리 포인트를 가지고 있습니다. navigator.plugins 객체는 Netscape, Firefox 그리고 Mozilla 에서만 지원합니다.

아래 예제는 브라우저에 설치되어있는 플러그인들의 목록을 모두 출력하는 예제입니다.  

<html>
<head>
<title>List of Plug-Ins</title>
</head>
<body>
<table border="1">
<tr>
    <th>Plug-in Name</th>
    <th>Filename</th>
    <th>Description</th>
</tr>
<script language="JavaScript" type="text/javascript">
for (i=0; i<navigator.plugins.length; i++) {
   document.write("<tr><td>");
   document.write(navigator.plugins[i].name);
   document.write("</td><td>");
   document.write(navigator.plugins[i].filename);
   document.write("</td><td>");
   document.write(navigator.plugins[i].description);
   document.write("</td></tr>");
}
</script>
</table>
</body>
</html>

 


플러그인 검사

각 플러그인은 배열에 하나의 엔트리를 가지고 있습니다. 각 엔트리는 다음과 같은 속성을 가지고 있습니다.

  • name - is the name of the plug-in.

  • filename - is the executable file that was loaded to install the plug-in.

  • description - is a description of the plug-in, supplied by the developer.

  • mimeTypes - is an array with one entry for each MIME type supported by the plug-in.

아래 예제를 한번 보실까요? 

<html>
<head>
<title>Using Plug-Ins</title>
</head>
<body>
<script language="JavaScript" type="text/javascript">
media = navigator.mimeTypes["video/quicktime"];
if (media){
  document.write("<embed src='quick.mov' height=100 width=100>");
}
else{
  document.write("<img src='quick.gif' height=100 width=100>");
}
</script>
</body>
</html>

video/quiktime 플러그인이 설치되어있는지를 검사한 뒤, 설치가 되어있으면 quick.mov를 embed하여 플레이 시킬 수 있도록 하였고 설치가 되어있지 않으면 quick.gif라는 이미지 파일을 보여주도록 하는 예제입니다. 

 


멀티미디어 다루기

대부분의 브라우저에서 동작하는 예제를 한번 보도록 할 까요???

<html>
<head>
<title>Using Embeded Object</title>
<script type="text/javascript">
<!--
function play()
{
  if (!document.demo.IsPlaying()){
    document.demo.Play();
  }
}
function stop()
{
  if (document.demo.IsPlaying()){
    document.demo.StopPlay();
  }
}
function rewind()
{
  if (document.demo.IsPlaying()){
    document.demo.StopPlay();
  }
  document.demo.Rewind();
}
//-->
</script>
</head>
<body>
<embed id="demo" name="demo"
    src="http://www.amrood.com/games/kumite.swf"
    width="318" height="300" play="false" loop="false"
    pluginspage="http://www.macromedia.com/go/getflashplayer"
    swliveconnect="true">
</embed>
<form name="form" id="form" action="#" method="get">
<input type="button" value="Start" onclick="play();" />
<input type="button" value="Stop" onclick="stop();" />
<input type="button" value="Rewind" onclick="rewind();" />
</form>
</body>
</html>

위 예제는  

http://www.amrood.com/games/kumite.swf 파일을 로딩해서 화면에 보여주는데,
Start버튼을 누르면 kumite.swf파일이 실행이 되면서 플래쉬게임이 진행이 되야 하는데,
제 브라우저에서는 동작을 안하네요? ㅋㅋ 왜 안되는지 이유를 밝혀서 올리도록 하겠습니다. ㅋㅋ
(embed태그의 play옵션을 true로 주면 실행이 되는데 아마 자바스크립트에서 실행하는 방법이
예제에 나와있는 것과 달라진것이 아닌가 싶네요.)

 --------------------------

swf파일 실행시키는 거 한참 찾아봤는데도 잘 모르겠네요. UI쪽은 역시 힘들군요...아흑....

아시는 분 계시면 댓글좀 남겨주세요 ㅠㅠ 

 

 

Reference : http://www.tutorialspoint.com/javascript/javascript_multimedia.htm

 

 

 


유효성 검사라는 말은 좀 어렵죠? 간단히 말하면 그냥 검사하는겁니다. 보내려는 데이타가 제대로 된 포맷으로 전달이 되는지 아니면 필수 입력값이 빈칸으로 남아있지는 않은지 등등을 말이죠.
자 바스크립트에서 유효성 검사는 ​크게 두가지로 나눕니다. 기본 검사와 포맷검사. 기본검사에서는 필수입력값이 빈칸으로 남아있지는 않은지에 대한 검사를 합니다. 그리고 포맷검사에서는 입력한 데이타의 포맷이 서버에서 필요로 하는 포맷이 맞는지를 검사를 하게 됩니다.

 

예제를 한번 볼까요?? 검사를 할때는 아래처럼 코딩을 하게 됩니다. 검사를 할 때 하나의 텍스트필드 단위로 할 수도 있을 것이고 모든 필드를 대상으로 검사를 진행할 수도 있을텐데 이건 개발자의 재량껏 어떤식으로 구현하겠다~라고 정하면 될 것 같네요. 

<html>
<head>
<title>Form Validation</title>
<script type="text/javascript">
<!--
// Form validation code will come here.
//-->
</script>
</head>
<body>
 <form action="/cgi-bin/test.cgi" name="myForm"  
          onsubmit="return(validate());">
 <table cellspacing="2" cellpadding="2" border="1">
 <tr>
   <td align="right">Name</td>
   <td><input type="text" name="Name" /></td>
 </tr>
 <tr>
   <td align="right">EMail</td>
   <td><input type="text" name="EMail" /></td>
 </tr>
 <tr>
   <td align="right">Zip Code</td>
   <td><input type="text" name="Zip" /></td>
 </tr>
 <tr>
 <td align="right">Country</td>
 <td>
 <select name="Country">
   <option value="-1" selected>[choose yours]</option>
   <option value="1">USA</option>
   <option value="2">UK</option>
   <option value="3">INDIA</option>
 </select>
 </td>
 </tr>
 <tr>
   <td align="right"></td>
   <td><input type="submit" value="Submit" /></td>
 </tr>
 </table>
 </form>
 </body>
 </html>


기본검사:

위에서 본 기본 틀에서 validation하는 기능을 구현해보았습니다.:

<script type="text/javascript">
<!--
// Form validation code will come here.
function validate()
{
 
   if( document.myForm.Name.value == "" )
   {
     alert( "Please provide your name!" );
     document.myForm.Name.focus() ;
     return false;
   }
   if( document.myForm.EMail.value == "" )
   {
     alert( "Please provide your Email!" );
     document.myForm.EMail.focus() ;
     return false;
   }
   if( document.myForm.Zip.value == "" ||
           isNaN( document.myForm.Zip.value ) ||
           document.myForm.Zip.value.length != 5 )
   {
     alert( "Please provide a zip in the format #####." );
     document.myForm.Zip.focus() ;
     return false;
   }
   if( document.myForm.Country.value == "-1" )
   {
     alert( "Please provide your country!" );
     return false;
   }
   return( true );
}
//-->
</script>

소스를 실행해보세요 ^__^

 

포맷검사:

 이번에는 포맷검사를 해보도록 할텐데요 이 포맷검사는 어떤 입력창에 들어와야 하는 입력값의 포맷을 정의하는 정책이 있어야 합니다. 예를들어 이메일을 입력해야하는 입력란에는 asdf@bbc.com과 같은 형태의 이메일 포맷을 갖고있는 문자열이 들어가야 한다는 것입니다. 아래 예제는 이메일 필드에 입력된 값이 이메일 형식에 맞는지를 검사해주는 기능이네요.

<script type="text/javascript">
<!--
function validateEmail()
{
 
   var emailID = document.myForm.EMail.value;
   atpos = emailID.indexOf("@");
   dotpos = emailID.lastIndexOf(".");
   if (atpos < 1 || ( dotpos - atpos < 2 )) 
   {
       alert("Please enter correct email ID")
       document.myForm.EMail.focus() ;
       return false;
   }
   return( true );
}
//-->
</script>

직접 테스트 해보실거죠?? ^___^

 

 

Reference : http://www.tutorialspoint.com/javascript/javascript_form_validations.htm

 

 

 


프로그래밍에는 세가지 종류의 에러가 있습니다.

 (a) 문법에러 (b) 런타임 에러 (c) 논리적 에러

문법 에러

문법에러는 파싱에러라고도 합니다. 문법상 맞지 않아서 발생하는 에러죠. 문법에러는 컴파일시에 에러가 있다고 알려주기때문에 찾기쉬운 에러입니다.

아래 예제는 닫는 괄호를 빼먹은 문법에러입니다.

<script type="text/javascript">
<!--
window.print(;
//-->
</script>

 

런타임 에러

런타임에러는 예외라고도 하며 실행시에 에러가 발생합니다. 아래 예제는 문법은 어긋나지 않지만 실행시에 오류가 발생합니다. 왜냐하면 존재하지 않는 메소드를 호출하려고 하기 때문이죠.

<script type="text/javascript">
<!--
window.printme();
//-->
</script>

 

논리적 에러

논리적으로 에러가 발생한 것은 찾기가 힘든 에러입니다. 문법적으로도 맞고 실행시에 아무런 문제가 발생하지 않지만 원하는 값이 안나오는 그런 에러이기 때문에 내가 구현한 로직이 잘못되어서 발생하는 에러라고 보시면 됩니다.

try...catch...finally

자바에서 쓰는 try-catch절을 자바스크립트에서도 쓸 수가 있네요
<script type="text/javascript">
<!--
try {
    // Code to run
    [break;]
} catch ( e ) {
    // Code to run if an exception occurs
    [break;]
}[ finally {
    // Code that is always executed regardless of 
    // an exception occurring
}]
//-->
</script>

 

예제:

존재하지 않는 함수를 호출할 경우 어떻게 에러가 발생하는지 한번 볼까요? 에러는 브라우저별로 다른게 보일 수 있다는 것을 명심하세요. 

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
var a = 100;

alert("Value of variable a is : " + myFunc2() );

} //--> </script> </head> <body> <p>Click the following to see the result:</p> <form> <input type="button" value="Click Me" onclick="myFunc();" /> </form> </body> </html>

 

 

이제 try...catch 절을 이용해서 에러를 잡아보도록 하죠.

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
   var a = 100;
   
   try {
      alert("Value of variable a is : " + myFunc2() );
   } catch ( e ) {
      alert("Error: " + e.description );
   }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

 

 

finally 는 try-catch절에서 에러가 발생하든 안하든 항상 실행이 되는 부분입니다.

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
   var a = 100;
   
   try {
      alert("Value of variable a is : " + myFunc2()  );
   }catch ( e ) {
      alert("Error: " + e.description );
   }finally {
      alert("Finally block will always execute!" );
   }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

 

 

throw

throw역시 자바에 있는 개념이죠. 예외가 발생했을 때 내가 처리안하고 다른녀석한테 처리해달라고 던지는 놈입니다. throw의 사전적 의미가 "던지다" 입니다. 아래 예제를 한번 보죠.
<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
   var a = 100;
   var b = 0;
   
   try{
      if ( b == 0 ){
         throw( "Divide by zero error." ); 
      }else{
         var c = a / b;
      }
   }catch ( e ) {
      alert("Error: " + e );
   }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

 

b에 0을 할당하고 b가 0이면 throw 하도록 만든 예제네요. throw가 어떤 식으로 화면에 표현되는지 한번 실행해보세요. 

 

onerror() 메소드

 onerror 메소드는 JavaScript에서 에러핸들링을 위해서 제일 처음 나온 기능이라고 합니다.  error 이벤트는 웹페이지에서 에러가 발생했을때 window객체에서 발생시킵니다. 아래 예제를 한번 볼까요.

<html>
<head>
<script type="text/javascript">
<!--
window.onerror = function () {
   alert("An error occurred.");
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

에러가 발생하면 경고창을 띄우도록 해놓고 존재하지 않는 함수를 호출하는 예제군요.

한번 실행해보세요. 

 

 onerror 이벤트 핸들러는 세가지 정보를 제공합니다.

  • 에러메시지 . 브라우저가 보여주는 에러메시지입니다.

  • URL . 에러가 발생한 파일을 알려줍니다.

  • 라인 넘버 . 에러를 발생시킨 라인이 몇번째 라인인지를 알려줍니다.

이 세가지 정보를 어떻게받아오는지 한번 볼까요?

<html>
<head>
<script type="text/javascript">
<!--
window.onerror = function (msg, url, line) {
   alert("Message : " + msg );
   alert("url : " + url );
   alert("Line number : " + line );
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

 

 

 

 onerror 메소드는 아래와같이 이미지를 불러올때 에러가 발생하면 메시지를 보여주기 위해서 사용될 수도 있습니다.

<img src="myimage.gif"
    onerror="alert('An error occurred loading the image.')" />

 

이 onerror메소드는 이미지 태그 이외에도 다른 태그에서도 사용될 수 있다는 것을 알아두시면 좋을 듯 싶네요.

 

 

 

Reference : http://www.tutorialspoint.com/javascript/javascript_error_handling.htm 

 

 

 

 


이번 포스트에서는 자바스크립트의 객체에 대해서 알아볼텐데요 객체가 무엇인지는 알고계신다는 전제하에 실무 위주의 내용을 얘기해보도록 할거에요. 자바의 객체와 동일한 것이라고 생각하시면 되고 단지 사용법이 어떤지에 대해서 알고 넘어가는 정도로 습득하시면 될것 같습니다. 

객체의 속성

자바를 공부해 보신분들이라면 아시겠지만 객체 안에는 프리미티브 멤버변수나 다른 객체를 하나의 변수처럼 가지고 있습니다. 이런 멤버변수들을 자바스크립트에서는 속성이라고 얘기를 합니다. 그리고 그 속성들에 값을 넣는 방법은 다음과 같습니다.:
객체명.속성명 = 속성값;

예제:

아래 예제는 document객체의 title이라는 속성을 str변수에 할당하는 예제입니다. 

var str = document.title;

객체의 메소드

이번에는 메소드에 대해서 알아보죠.

예제:

아래 예제는 document객체 내부에 선언되어있는 write()메소드를 호출하는 예제입니다. 이미 여러번 보셨을 겁니다. hello world 뭐 이런 예제에서 말이죠.

document.write("This is test");


사용자 정의 객체

다 아시겠지만 모든 사용자정의 객체와 이미 정의되어있는 built-in 객체들은 Object라는 객체의 하위 클래스들입니다.

The new Operator:

아래 예제는 new 오퍼레이터를 이용해서 built-in JavaScript 객체들을 생성하는 것을 보여주고있습니다.

var employee = new Object();
var books = new Array("C++", "Perl", "Java");
var day = new Date("August 15, 1947");


Object() 생성자:

생성자라는 것은 객체를 생성하고 초기화하는 메소드입니다. 위 예제에서 new Object(); 의 Object()는  Object객체의 생성자입니다. 이렇게 생성된 객체에 대한 레퍼런스를 var로 선언한 employee에 할당해주면 나중에 이 객체에 접근할 때 employee라는 이름으로 접근할 수 있습니다. 만약 employee가 이름과 나이를 속성으로 가지고 있다고 한다면 이런 것은 어떻게 값을 넣을 수 있을 까요? 속성은 변수가 아닙니다. 따라서 var키워드로 선언을 하지 않습니다. 아래 예제를 한번 보도록 하죠. 

예제 1:

아래 예제는 객체를 생성하고 그 객체의 속성을 정의해줍니다.

<html>
<head>
<title>User-defined objects</title>
<script type="text/javascript">
var book = new Object();   // Create the object
    book.subject = "Perl"; // Assign properties to the object
    book.author  = "Mohtashim";
</script>
</head>
<body>
<script type="text/javascript">
   document.write("Book name is : " + book.subject + "<br>");
   document.write("Book author is : " + book.author + "<br>");
</script>
</body>
</html>

 

 

예제 2:

이번 예제는 사용자 정의 객체를 만드는 예제입니다. 여기서 this 키워드는 함수로 전달된 객체를 참조하는 역할을 합니다.

<html>
<head>
<title>User-defined objects</title>
<script type="text/javascript">
function book(title, author){
    this.title = title; 
    this.author  = author;
}
</script>
</head>
<body>
<script type="text/javascript">
   var myBook = new book("Perl", "Mohtashim");
   document.write("Book title is : " + myBook.title + "<br>");
   document.write("Book author is : " + myBook.author + "<br>");
</script>
</body>
</html>

 

 

객체의 메소드 정의하기

이번에는 객체의 메소드를 정의하는 방법을 알아보도록 하겠습니다.

예제:

<html>
<head>
<title>User-defined objects</title>
<script type="text/javascript">

// 객체의 메소드가 될 함수를 정의합니다.
function addPrice(amount){
    this.price = amount; 
}

function book(title, author){
    this.title = title; 
    this.author  = author;
    this.addPrice = addPrice; // 메소드를 속성으로 할당(선언)합니다.
}

</script>
</head>
<body>
<script type="text/javascript">
   var myBook = new book("Perl", "Mohtashim");
   myBook.addPrice(100);
   document.write("Book title is : " + myBook.title + "<br>");
   document.write("Book author is : " + myBook.author + "<br>");
   document.write("Book price is : " + myBook.price + "<br>");
</script>
</body>
</html>

 

 

with 키워드

with 키워드는 객체의 속성이나 메소드를 참조하기위한 단축키워드 같은 것입니다.

with에 파라미터로 전달된 객체는 해당 블락내에서 기본적인 참조변수처럼 동작합니다.따라서 해당 객체의 속성이나 메소드에 접근할 때 궂이 해당 객체이름과 점을 안찍어도 됩니다.

문법:

with (object){
    properties used without the object name and dot
}

예제:

<html>
<head>
<title>User-defined objects</title>
<script type="text/javascript">

// Define a function which will work as a method
function addPrice(amount){
    with(this){
       price = amount; 
    }
}
function book(title, author){
    this.title = title; 
    this.author  = author;
    this.price = 0;
    this.addPrice = addPrice; // Assign that method as property.
}
</script>
</head>
<body>
<script type="text/javascript">
   var myBook = new book("Perl", "Mohtashim");
   myBook.addPrice(100);
   document.write("Book title is : " + myBook.title + "<br>");
   document.write("Book author is : " + myBook.author + "<br>");
   document.write("Book price is : " + myBook.price + "<br>");
</script>
</body>
</html>

 

 

 

 

 

 Reference : http://www.tutorialspoint.com/javascript/javascript_objects.htm 

 

 

 


오늘은 자바스크립트의 if문에 대해서 알아보도록 하겠습니다.

다른 프로그래밍 언어와 마찬가지로 자바도 if문, if-else문, 그리고 if-else if-..-..-else문을 지원합니다.

하나씩 차례대로 배워보죠. 

if 문

if문의 문법은 아래와 같습니다.

 

 

if (조건){
   조건이 참일때 실행되어야 할 문장
}

조건의 결과가 참인 경우에만 안쪽에 있는 문장을 실행시킵니다.

 

예제를 한번 보실까요??

<script type="text/javascript">
<!--
var age = 20;
if( age > 18 ){
   document.write("<b>Qualifies for driving</b>");
}
//-->
</script>

 

위 코드는 아래와 같은 결과를 보여주겠죠?? 

Qualifies for driving

 

다음은 if-else문을 한번 보겠습니다. 

if...else 문

if문에서 else만 추가된 거죠. 문법은 아래와 같습니다.

 

 

if (조건){
   조건이 참이면 실행될 문장
}else{
   조건이 거짓이면 실행될 문장
}

조건이 참이면 if내의 문장을 실행하고 거짓이면 else내의 문장을 실행합니다. 

 

 

예제를 보도록 하겠습니다. 

<script type="text/javascript">
<!--
var age = 15;
if( age > 18 ){
   document.write("<b>Qualifies for driving</b>");
}else{
   document.write("<b>Does not qualify for driving</b>");
}
//-->
</script>

 

아래처럼 결과가 나오는게 맞나요?? 맞습니다~ 

Does not qualify for driving

 

if...else if... 문

이것도 어렵지 않습니다. 그저 else를 여러개 붙여 놓은 거라고 보시면 됩니다. 문법부터 한번 보시죠. 

 

 

if (조건 1){
   조건 1이 참이면 실행되야 할 문장 - A
}else if (조건 2){
   조건 1이 거짓이고 2가 참이면 실행되야 할 문장 - B
}else if (조건 3){
   조건 1, 2가 모두 거짓이고 3이 참이면 실행되야 할 문장 - C
}else{
   조건 1, 2, 3이 모두 거짓이면 실행되야 할 문장 - D
}

위 문법을 말로 풀어쓰면 이렇게 되는겁니다.  

 

만약 조건1이 참이면 A를 진행하고 B, C, D는 실행하지 마세요.

만약 조건1이 거짓이고 조건2가 참이면 B만 실행하세요.

만약 조건 1과 2가 모두 거짓이고 조건3이 참이라면 C만 실행하세요.

만약 조건1, 2, 3 모두가 거짓이면 D를 실행하면 됩니다. 

 

예제를 한번 보시죠.
<script type="text/javascript">
<!--
var book = "maths";
if( book == "history" ){
   document.write("<b>History Book</b>");
}else if( book == "maths" ){
   document.write("<b>Maths Book</b>");
}else if( book == "economics" ){
   document.write("<b>Economics Book</b>");
}else{
  document.write("<b>Unknown Book</b>");
}
//-->
</script>

 

결과가 아래처럼 나오는게 맞는건지 여러분이 판단해 보세요. 

Maths Book

 

 

 

 

Reference : http://www.tutorialspoint.com/javascript/javascript_ifelse.htm

 

 


안녕하세요~~ 케이치입니다~


오늘은 자바스크립트를 삽입하는 방법


자바스크립트 코드는 헤드, 바디 태그 안에 들어갈 수도 있고 두 태그 모두에 들어갈 수도 있고, 외부파일로 정의해서 include할 수도 있습니다. 각각 어떻게 하는지 한번 알아보죠. 


 <head> 태그 내의 JavaScript

사용자가 발생시키는 특정 이벤트에 대해서 자바스크립트가 동작을 해야한다면 헤드태그 안쪽에 코드를 삽입합니다.

 

<html>
<head>
<script type="text/javascript">
<!--
function sayHello() {
   alert("Hello World")
}
//-->
</script>
</head>
<body>
<input type="button" onclick="sayHello()" value="Say Hello" />
</body>
</html>

 

 

 <body> 태그 내의 JavaScript

웹페이지가 로드될 때 자바스크립트 코드에 의해서 어떤 내용물이 화면에 출력되어야 한다면 바디 태그 안에 스크립트를 넣어주세요. 이 경우에는 자바스크립트 코드로 정의된 함수는 가질 수 없습니다.

 

<html>
<head>
</head>
<body>
<script type="text/javascript">
<!--
document.write("Hello World")
//-->
</script>
<p>This is web page body </p>
</body>
</html>

 

결과는 아래처럼 보이겠죠?

 

Hello World
This is web page body

 

 

<body> 와 <head>에 동시에 쓰이는 JavaScript

 

<html>
<head>
<script type="text/javascript">
<!--
function sayHello() {
   alert("Hello World")
}
//-->
</script>
</head>
<body>
<script type="text/javascript">
<!--
document.write("Hello World")
//-->
</script>
<input type="button" onclick="sayHello()" value="Say Hello" />
</body>
</html>

 


외부 파일로 정의된 JavaScript

JavaScript를 좀더 확장해서 쓰려면 외부파일로 정의해서 쓰는 방법이 있습니다. 기능별로 파일을 분리해서 정리하면 관리하기가 편해지겠죠. 이건 뭐 어떻게 관리하느냐에 따라 달렸지만요 ㅋ 여러 페이지에서 동일한 스크립트를 사용해야 한다면 분리해서 사용하시는 것이 편리할겁니다.

자바스크립트 코드를 외부파일로 저장하려면 .js확장자를 사용합니다. 그리고 이 파일을 include하는 방법은 src속성을 이용해서 파일경로를 지정해주면 됩니다. 


<html>
<head>
<script type="text/javascript" src="filename.js" ></script>
</head>
<body>
.......
</body>
</html>

 

 

filename.js 

function sayHello() {
   alert("Hello World")
}

 

 

한번씩 다 해보시고 안된다 하시는게 있으시면 댓글로 질문 남겨주세요~ ^-^


이상 케이치였습니다~


즐프하세요~~ ^-^

 

Reference : http://www.tutorialspoint.com/javascript/javascript_placement.htm 

 


안녕하세요 케이치입니다.

 

자바스크립트를 공부해볼까요?

 

자바스크립트는 기본적으로  <script>... </script>  태그를 사용합니다. 

자바스크립트 태그는 웹페이지 어디에다가 넣어도 큰 상관은 없지만 일반적으로는  <head> 태그내에서 사용됩니다. 

 

<script ...>
  JavaScript code
</script>

 

script 태그는 두가지 중요한 속성을 가집니다.

  • language: 스크립팅 언어가 뭔지를 지정해주는거죠. 우리는 자바스크립트를 배우니까 javascript 라고하면 됩니다. 최신 버전의 HTML이나 XHTML에서는 사용하지 않게될거라고 하네요. 저도 이제 막 자스 공부를 시작해서 확실치는 않습니다 ㅋㅋ 

  • type:  타입은 "text/javascript" 이 되어야 합니다.  

 

그래서 아래처럼 기본틀이 잡혀있어야 하는 거죠.

 

<script language="javascript" type="text/javascript">
  JavaScript code
</script>

 

나의 첫 자바스크립트

모든 프로그래밍 언어에서 "Hello World"는 기본이죠. 자스(자바스크립트를 줄임)를 이용해서 "안녕 세상아"를 출력해보도록 하겠습니다. 

<html>
<body>
<script language="javascript" type="text/javascript">
<!--
   document.write("Hello World!")
//-->
</script>
</body>
</html>

 

 자 위 소스를 보시면 자스코드를 넣어야 할 부분에 주석처리하는 태그를 추가로 넣었습니다. 이건 왜 넣었냐 하면말이죠. 브라우저가 자바스크립트를 지원하지 않을 경우에는 실행하지 말라는 의미입니다. 지원하지 않는 브라우저가 실행하려면 오류가 날테니 말이죠. "//-->"에서  "//" 는 Javascript에서 쓰는 주석문법입니다.

 document.write 가 하는 역할은 HTML문서에 스트링을 쓰는 것입니다. 이 함수는 text나 HTML또는 둘 다를 쓰기위해서 사용될 수 있습니다. 어쨌든 결과는 아래처럼 나와야겠죠?

 

Hello World!

 

 

 

이제 자바스크립트의 특징을 알아보도록 하겠습니다.

빈칸, 탭, 그리고 라인 브레이커는 무시합니다.

JavaScript 는 코드내에 존재하는 스페이스나 탭, 그리고 new lines 를 무시합니다.

따라서 원하는 대로 깔끔하게 코드를 정리할 수가 있겠죠??

세미콜론은 옵션입니다.

일반적으로 라인의 끝을 알려주는게 세미콜론이죠. C, Java 등등에서 모두 그렇게 쓰입니다. 하지만 자스에서는 아래처럼 써도 상관없습니다.  

<script language="javascript" type="text/javascript">
<!--
  var1 = 10
  var2 = 20
//-->
</script>

 

하지만 세미콜론을 쓰지 않는 경우에는 한줄에 하나의 statement만 올 수 있습니다. 따라서 두 가지 일을 하는 statement를 한줄에 쓰려면 세미콜론은 필수입니다. 뭐 그냥 세미콜론을 쓰는게 낫겠죠?

<script language="javascript" type="text/javascript">
<!--
  var1 = 10; var2 = 20;
//-->
</script>

 

 

대소문자를 구분합니다.

자바의 주석처리방식도 지원합니다.

JavaScript 는 C-style 과 C++-style 의 주석처리방식을 지원합니다.

 

 

<script language="javascript" type="text/javascript">
<!--

// This is a comment. It is similar to comments in C++

/*
 * This is a multiline comment in JavaScript
 * It is very similar to comments in C Programming
 */
//-->
</script>

 

 

자, 지금까지 자바스크립트의 기본적인 문법 및 특징에 대해서 알아보았습니다.