내가 특정한 조건에서 무언가 화면에 보이게 만들고 싶을때 어떻게 해야 할까요?

리액트에서는 이렇게 합니다.

먼저 Hello.js를 다음과 같이 코딩해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
import React from 'react';
 
function Hello({ trueAndFalse }) {
 
    return (
        <div>
            {trueAndFalse ? <b>!!</b> : null}
           안녕리액트
        </div>
    );
}
 
export default Hello;
cs

여기서 킵 포인트는 trueAndFalse인데요.  

삼항연산자를 사용하여 {trueAndFalse ? <b>!!</b> : null}이렇게 표현해 줍니다.

만약 trueAndFalse가 true이면 <b>!!</b>

false이면 null이 응답될것입니다. 

 

그런데 우리가 값이  true만 나올것이라고 생각한다면 이렇게 하면 됩니다.

{trueAndFalse &&<b>!!</b> }이렇게 하면 true일때만 이 값이 나오게 해라라는 의미로 사용가능합니다.

 

다음 App.js에 다음과 같이 코딩합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
import React from 'react';
import Hello from './Hello'
 
function App() {
 
  return (
    <div >
      <Hello name="안녕안녕" trueAndFalse={true/>
    </div>
  );
}
 
export default App;
cs

trueAndFalse={true} 이 부분이 핵심입니다. 

이 부분을 통해서 갑니다. 참고로 {true}부분을 지워도 상과없습니다.

그러면 trueAndFalse의 기본값은 true이기 때문입니다.

우리가 출력하면 다음과 같은 값을 얻을 수 있습니다.

false하면 !!가 붙지 않을 것입니다. 

 

이것을 활용하는 방법은 이제나중에 서버랑 연결했을때 만약 서버에서특정값을 보내준다면

그것이 true냐 false냐 값을 생각해서 출력해 줄 수 있을 것입니다. 

사용 방법에 따라 여러가지 다양한 효과를 낼 수 있게 되는 것이죠

 

다음 시간에는 리액트의 가장 중요한 기능중에 하나인 상태를 다루는 방법을 알아보도록 하겠습니다.

'리액트' 카테고리의 다른 글

React - 컴포넌트 만들기  (0) 2020.07.29
React- 프로젝트 만들기  (0) 2020.07.28

리액트는 컴포넌트라는 조각들로 웹페이지를 조립 할 수 있기 때문입니다.

그러면 한번 컴포넌트를 만들어보겠습니다. 

먼저 Hello.js라는 파일을 만들어줍니다. 

여기서 중요한것은 파일 이름 시작은 대문자로 해야 합니다. 

이렇게 만들고 나서 기본적인 리액트 코드 틀을 만들어 줍니다.

 

1
2
3
4
5
6
7
8
9
10
11
import React from 'react'//리액트를 임포트 시켜줍니다.
 
function Hello(){//우리는 함수형으로 만들겁니다. 여긴 파일이름과 동일하게 해주세요.
    return(
        <div>//이 부분을 프레그넌트라고 부릅니다.
           {/*여기에 내용을 집어 넣습니다. */ }
안녕 리액트
        </div>
    );
}
 
export default Hello;//우리가 만든 컴포넌트를 밖으로 내보내 줍니다.

cs

추가 설명으로 return 안에 들어있는 html태그를 jsx라고 부릅니다.

쉽게 설명해서  바벨이라는 것이 여기에 사용된  자바스크립트를 html태그로 바꿔줍니다.

결국 return안에 들어 있는건 자바스트라고 보셔야해요.

그리고 2개 이상의 태그를 사용할때는 프래그넌트라는 것을 사용해서 표현해야합니다.

그런데 div태그로 구지 만들필요는 없구요.

<></>이렇게 만드시고 사용하셔도 됩니다.

 

그리고 프레그넌트 안에 주석 다는 것과 우리가 함수를 쓰는 부분의 주석을 처리 하는 방법이 달라요.

자바스크립트 주석은 "//주석내용" 이고 프레그넌트는{/*주석 내용*/} 입니다.

그리고 html태그 같이 생긴것 안에  주석을 넣으려면 <div /*주석내용*/>요렇게 써주시면되겠습니다.

 

우리는 한번 내용을 써볼께요 안녕리액트라고 써보겠습니다.

그리고 App.js로 이동합니다. 그리고 안에 있는 내용을 다음과 같이 수정하세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import React from 'react';
import Hello from './Hello';//여기는 우리가 만든 컴포넌트를 import 시켜야 불러올수 있어요
 
 
function App() {
 
  return (
    <div >
      <Hello />//우리가 만든 리액트를 컴포넌트를 이렇게 추가시켜줍니다.
    </div>
  );
}
 
export default App;
cs
 
그다음 터미널에 yarn start 를 실행하면 화면에 이렇게 나옵니다.

만약 컴포넌트를 여러개 추가시키면

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import React from 'react';
import Hello from './Hello';
 
 
function App() {
 
  return (
    <div >
      <Hello />
      <Hello />
      <Hello />
    </div>
  );
}
 
export default App;
cs

 

위의 화면과 같이 나오게 될겁니다.

리액트가 프레그넌트를 조각처럼 사용한다는 사실을 알수 있는 부분이지요.

따로따로css를 주는 것도 가능합니다. 한번 해볼까요? 

다시 Hello.js로 이동해서 다음과 같이 코딩해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import React from 'react';
 
function Hello({name,color}){
   const style={
        color:color
    }
    return(
        <div style={style}>
           안녕리액트 {name}
        </div>
    );
}
 
export default Hello;
cs

여기서 function Hello({name,color})부분의 {}안에 있는 값은 원래는 props로 해주어야합니다.

그리고

<div style={style}>

      안녕리액트 {name}

  </div>

여기서 name은 props.name이라고 해야하는게 정상인데요

function Hello({name,color})이렇게 하면 ES6문법중에 하나인 구조분해문법이 적용되어서

{name}과 같이 써줄수 있습니다. 참고하세요.

그리고 다시 App.js로 이동해서 다음과 같이 작성해줍니다.

 

colorscripter.com/info#e"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import React from 'react';
import Hello from './Hello';
 
 
function App() {
 
  return (
    <div >
      <Hello name ="Hello react" color="red"/>
      <Hello name ="Hello react" color="blue"/>
      <Hello  color="green"/>
    </div>
  );
}
 
export default App;
cs

이렇게 하면 다음과 같은 결과가 나옵니다.

 

위에서 보는 바와 같이 넘겨주는 값이 없으면 나오지 않으니 참고하세요.

 

그리고 기능중에 chlidren이란 기능도 있습니다. 한번 Wrapper.js를 만들어주세요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import React from 'react';
 
function Wrapper() {
    const style = {
        border: '2px solid black',
        padding: 16
    };
    return (
        <div >
            <div style={style}></div>
        </div>
    );
}
 
export default Wrapper;
cs

그다음 App.js에 Wrapper.js를 import시켜줍니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import React from 'react';
import Hello from './Hello';
import Wrapper from './Wrapper';
 
 
function App() {
 
  return (
    <div >
      <Wrapper>
      <Hello name ="Hello react" color="red"/>
      <Hello name ="Hello react" color="blue"/>
      <Hello  color="green"/>
      </Wrapper>
    </div>
  );
}
 
export default App;
cs

그려면 다음과 같은 결과가 나올겁니다.

우리가 앞서 만든 컴포넌트들이 다 사라졌습니다. 정확히 Wrapper.js가 뒤덮어 버렸죠. 

이럴때 우리는 wapper컴포넌트에 children이라는 props를 다음과 같이 추가시켜줍니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import React from 'react';
 
function Wrapper({children}) {
    const style = {
        border: '2px solid black',
        padding: 16
    };
    return (
        <div >
            <div style={style}>{children}</div>
        </div>
    );
}
 
export default Wrapper;
 
 
cs

그러면 이렇게 나와요.

<Wrapper></Wrapper>태그 안에 우리가 썻던 <Hello ... />내용이 위로 올라 갈 수 있도록 해줄 수 있습니다.

 

오늘은 컴포넌트를 다루는 법에 대해서 알아봤습니다.

다음시간에는 조건을 주어서 랜더링을 하는 방법에 대해서 알아보겠습니다.

'리액트' 카테고리의 다른 글

React - 조건부 랜더링 하기  (0) 2020.07.30
React- 프로젝트 만들기  (0) 2020.07.28

리액트 프로젝트 시작`~~~~

목표는 리액트로 todoList만들 수 있을 때까지 해볼까합니다.

리액트로  todolist만들면 정말 기초적인 기능은 다 할 수 있다고 생각해도 됩니다.

 

오늘은 첫 시간으로 프로젝트 만들기 

 

os는 windows10을 사용할껍니다.

먼저 준비물~~

<필수 준비물>

1.node.js : https://nodejs.org/ko/

필수 필수 필수~~~ 버전은 최신 버전보다 LTS버전을 사용하시는걸 추천합니다.

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

2.EDI :개발툴입니다. 이클립스, 아톰, 인텔리제이, 등등이 있는데 우리는 visual Studio code를 사용할 거예요.

쓰기 편한거 쓰시면 되요(우리는 visual Studio code를  vscode로 부를겁니다.)

vscode :https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

솔직히 요것만 있으면 되는데.... 

그래도 좀더 편하게 하기 위해서 몇가지를 더 설치할거예요.

<편의성을 위해서 설치하자>

1. git for windows

요게 있어야 좀더 편하게 프로젝트를 받아올수 있어요.

뭐 요즘  윈도우에 powershell인가 있어서 사용 가능 하긴 한데 기능적인 면이나

뽀대(상당히 컬러 컬러해요) 

다운로드는 여기서 : https://git-scm.com/

 

Git

 

git-scm.com

2.yarn

이건 정말 깔아도 되고 안깔아도 되요. 우리가 나중에  패키지를 받아올때 npm 명령어를 써서 받아 와야 하는데

yarn을 쓰면 더 빠르고 명령어도 더 간결해서 사용하기 좋아요. 개인적으로는 강추 강추(없어도되요)

다운로드:https://classic.yarnpkg.com/en/

 

설치가 완료되었으면  vscode를 실행 시켜주세요.

vscode를 실행하면 

요런 사진이 떠요. 한글이 안되시는분들은  왼쪽에서 5번째 매뉴에서 korean으로 검색해서 한글 플러그인 설치 하시면 됩니다.

그다음 왼쪽 상단의 파일을 누르시고 폴더 열기를 눌러주세요.

원하는 위치에 폴더를 만들고  폴더 열기를 해줍니다.

다시  맨위의 메뉴중에 터미널을 클릭하시고 새 터미널을 눌러주세요. 

그러면 아래와 같이 터미널이 열려요. 그러면 아래와 같이 명령어를 입력해주세요.

 

npx create-react-app .

 

여기서 마지막에 .을 해주면 방금 만든 폴더에 리액트 프로젝트를 설치하겠다는 의미이고

만약 .말고 아무거나 단어를 쓰면 현재 폴더 안에 그 단어로 폴더가 생성되며 그 안에 프로젝트가 설치 됩니다.

편한대로 하세요 ㅎㅎ

이렇게 하면 무언가 엄청 많이 설치 됩니다.

 

마지막에 happy hacking!이라고 뜨면 패키지 설치가 완료~~

 

그럼 잘 설치 되었나 확인해볼까요?

우리는 yarn을 설치했다면 yarn start 라고 입력합니다.

만약 설치 안했으면 npm start이라고 입력하고 엔터~~~

그럼 다음과 같은 화면이 뜹니다.

 

이러면 성공입니다. 

그리고 서버를 끄고 싶다면 다시 터미널 클릭하고 컨트롤 c를 두번 누르면 실행 서버를 끌 수 있습니다.

 

다음 시간은 리액트의 핵심 기술인 컴포넌트 사용법에 대해서 알아볼게요.

'리액트' 카테고리의 다른 글

React - 조건부 랜더링 하기  (0) 2020.07.30
React - 컴포넌트 만들기  (0) 2020.07.29

자바스크립에서 함수를 사용하는 방법이다.

 

 

 

1
2
3
4
function a() {
    console.log("a");
};
a();
cs

function a()는 일반적인 함수 모양이고 a(); 는 자바스크립트 함수를 실행시키는 방법이다.

 

자바스크립트에서는 함수의 모양을 아주 다양하게 사용할 수 있다. 

예를 들면 함수 안에 함수를 넣을 수 있다.

1
2
3
4
5
6
7
8
function b(c) {
    console.log("123");
    c();
}
 
b(function c() {
    console.log("1234")
});
cs

 

결과는 

123

1234

 

함수 안에 함수를 쓸수 있다. 이처럼 변화 무쌍하게 사용할 수 있다.

그리고 es6버전에 와서는 더 간단하게 함수를 표현할 수 있다.

화살표 함수라는 것이다.

1
2
3
4
5
6
7
8
9
10
function a() {
    console.log("a");
};
//화살표함수로 바꾸면
const a = ()=>{
console.log("a")
};
 
//만약 함수 내용이 한줄이라면 더 {}도 생략 가능하다.
const b = () => console.log("1234")
cs

 

그러나 화살표 함수의 치명적인 약점이 있으니 일반 함수와 this사용법이 다르다.

원래 this가 함수 안에서 사용되면 함수 안에 있는 값을 참조하게 된다.

그러나 화살표 함수를 쓰면 this는 window객체를 사용한다.

 

1
2
3
4
5
6
7
8
9
10
11
window.name = 'kim';
 
 
 
const obj = {
    name'Lee',
    names: function () {
        console.log(`my name is ${this.name}`);
    }
};
obj.names();
cs

결과는 my name is Lee

화살표 함수를 쓰면

 

1
2
3
4
5
6
7
8
9
10
11
window.name = 'kim';
 
 
 
const obj = {
    name'Lee',
    names: () => {
        console.log(`my name is ${this.name}`);
    }
};
obj.names();
cs

여기서 값은 my name is kim이다.

 

그러면 여기서 화살표 함수 대신 줄여서 쓸 수 있는 방법이 무엇이 있을까?

ES6 부터는 function을 생략하여 쓸수 있다. 이렇게 말이다.

1
2
3
4
5
6
7
8
9
10
11
window.name = 'kim';
 
 
 
const obj = {
    name'Lee',
    names() {
        console.log(`my name is ${this.name}`);
    }
};
obj.names();
cs

이렇게 하면 결과는 my name is Lee이다.

 

 this를 윈도우 객체로 하려면 화살표 함수를 객체 안의 값을 사용하려면 function을 사용하나거나 

생략하는 방법을 사용하는 것이 좋다. 

canvas= document.querySelector('canvas').toDataURL('image/png');

 

그림 파일이나 캔버스를 이런식으로 선택해서 이렇게 하면 엄청 긴 주소로 파일을 가져오고 디비에 집어 넣을 수 있다.

 

장점 

1. 사진을 데이터로 변환하여 데이터 베이스에 집어 넣을 수 있다.

2.정확한 데이터를 입력할 때 좋다.

(서명 같은거 받을때 혹은 화면에 무언가를 써서 바로 집어 넣어야 할때 좋다.)

 

2.단점

1. 느리다. 

 이거 데이터 베이스에 정장된거 보면 엄청 긴 문자열이 들어간다. 긴 문자열을 빼와야 하니 느릴 수 밖에...

데이터 베이스에 보통 이런 길이로 들어간다.

 

#> base64 vais.png
iVBORw0KGgoAAAANSUhEUgAAANgAAACtCAYAAADSz7GfAAAAAXNSR0ICQMB9xQAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAZdEVYdFNvZnR3YXJlAE1pY3Jvc29mdCBPZmZp
Y2V/7TVxAAAWJklEQVR4Xu2df3AV13XHL6SWCWAHnASLmGDLTkAUOkXQ8mOGjCH5w6JtYlMnNZpp
YxG32O4kRbSTsXAby7TTIJo0iDQDeDwZY7dT7IwbbNczxn80mJIZIBkjy05GxgkWru0Kk8TgFPM7
qPvdd5+07767u3f37d23u+/7mVl09+np6emx3z3nnnPuueNGHAQhxArj5VdCiAUoMEIsQoERYhEK
jBCLUGCEWIQCI8QiFBghFqHACLEIBUaIRSgwQixCgRFiEQqMEItQYIRYhAIjxCIUGCEWocAIsQgF
RohFKDBCLEKBEWIRCowQi1BghFiEAiPEIhQYIRahwEgkXn31VfHCCy+I48ePy0dIEBQYCeXcuXNi
586dYs6cOe6xYsUKMX36dNHX1yefQfxgZ1+i5aWXXhKnTp0SBw8eFFu3bvW1WP39/WL+/PnyjKjQ
gpFRYKVaWlrEuHHjRFtbm2upNmzYEOgOwl0k/uRaYJgP4ALo6Ohw77gkPvgc16xZI44dOyYfMQPu
IwkALmLeOHDgwMiSJUvg2lYcPT098hkkCsPDwyMTJkyo+jzDjubm5pGzZ8/KVyE6cmXBcLfEnXbp
0qXu3EDl6aefliMSBbh5cSzRli1bhCNMeUZ05EZgTz31lBvB6u3tlY9UAzeRLkt0orqFoL29Xaxe
vVqeET8yLzDcXTHZXrVqldGFwLlYdKLelGC1tm/fLs9IEJkVGMS0cuVKV1xRIlU615Eky3333Sdu
[....]

위의 문장보다 더 길게 들어간다. 한번은 캔버스로 선 하나 그은거 저장해봤는데 크롬 콘솔창에 10줄 이상 들어간걸로 봤다.

 

2.용량이 커진다.

 대략 30%정도 더 커진다고한다.

 

3.지원하는 브라우저가 있고 지원하지 않는 브라우저가 있다고 한다.

 

 

 

분명 필요할 순간이 있을 것이다. 막 사용하기 보다 상황에 맞게 잘 사용하면 분명 엄청난 도움이 될 것이라고 생각된다.

엔터로 로그인한다든지 글을 쓴다던지 하는 이벤트를 한번 만들어 보겠습니다.

<script>

  function enterEvent(e){

     if(e.keyCode==13){

            하고 싶은 이벤트를 입력하세요.

      }

  }

</script>

 

<html>

<input type="password" onkeyup="enterEvent(e)"  id="pwd">

</html>

 

제이쿼리와 화살표 함수를 사용하면 더 편해집니다.

<script>

$(function(){

$("#pwd"). keyup(e=>{

     if(e.keyCode == 13){

        실행시키고 싶은 이벤트

   }

}

});

</script>

 

이걸 활용하면 마우스로 클릭 하게 하지 말고 키보드로 엔터 눌러도 무언가 이벤트가 일어나게 할 수 있어요.

 

 

html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="utf-8"/>
  <title>jQuery Select Example</title>
  <script src="https://code.jquery.com/jquery-latest.min.js" type="application/javascript"></script>
  <script type="application/javascript" src="https://zelkun.tistory.com/attachment/cfile8.uf@99BB7A3D5D45C065343307.js"></script>
</head>
<body>
  <div>
    <select id="sido">
      <option value="">선택</option>
    </select>
    <select id="sigugun">
      <option value="">선택</option>
    </select>
    <select id="dong">
      <option value="">선택</option>
    </select>
  </div>
</body>
</html>
cs

자바스크립트

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
jQuery(document).ready(function(){
  //sido option 추가
  jQuery.each(hangjungdong.sido, function(idx, code){
    //append를 이용하여 option 하위에 붙여넣음
    jQuery('#sido').append(fn_option(code.sido, code.codeNm));
  });
 
  //sido 변경시 시군구 option 추가
  jQuery('#sido').change(function(){
    jQuery('#sigugun').show();
    jQuery('#sigugun').empty();
    jQuery('#sigugun').append(fn_option('','선택')); //
    jQuery.each(hangjungdong.sigugun, function(idx, code){
      if(jQuery('#sido > option:selected').val() == code.sido)
        jQuery('#sigugun').append(fn_option(code.sigugun, code.codeNm));
    });
 
    //세종특별자치시 예외처리
    //옵션값을 읽어 비교
    if(jQuery('#sido option:selected').val() == '36'){
      jQuery('#sigugun').hide();
      //index를 이용해서 selected 속성(attr)추가
      //기본 선택 옵션이 최상위로 index 0을 가짐
      jQuery('#sigugun option:eq(1)').attr('selected''selected');
      //trigger를 이용해 change 실행
      jQuery('#sigugun').trigger('change');
    }
  });
 
  //시군구 변경시 행정동 옵션추가
  jQuery('#sigugun').change(function(){
    //option 제거
    jQuery('#dong').empty();
    jQuery.each(hangjungdong.dong, function(idx, code){
      if(jQuery('#sido > option:selected').val() == code.sido && jQuery('#sigugun > option:selected').val() == code.sigugun)
        jQuery('#dong').append(fn_option(code.dong, code.codeNm));
    });
    //option의 맨앞에 추가
    jQuery('#dong').prepend(fn_option('','선택'));
    //option중 선택을 기본으로 선택
    jQuery('#dong option:eq("")').attr('selected''selected');
 
  });
 
  jQuery('#dong').change(function(){
    var sido = jQuery('#sido option:selected').val();
    var sigugun = jQuery('#sigugun option:selected').val();
    var dong = jQuery('#dong option:selected').val();
    var dongCode = sido + sigugun + dong + '00';   
  });
});
 
function fn_option(code, name){
  return '<option value="' + code +'">' + name +'</option>';
}
cs

 

-출처:https://jsfiddle.net/zelkun/y46vhuea/4/

 

Edit fiddle - JSFiddle - Code Playground

 

jsfiddle.net

 

그런데 이렇게 찍으면 지역은 잘 찍어 볼 수 있는데 데이터 베이스로 값을 보내면 숫자가 찍힐 것이다. 그것은 

https://zelkun.tistory.com/attachment/cfile8.uf@99BB7A3D5D45C065343307.js

를 들어가보면 알수 있듯이 코드 값으로 찍히기 때문이다. 

그래서 ajax나 axios에서 코드 값이 아닌 지명을 넘기려면 위에서 찾아지는 값을 가지고  자바스크립트에서 제공하는 findIndx를 사용하여 인덱스를 찾아야한다.

 

1
2
3
var sidoIdx=hangjungdong.sido.findIndex(i=>i.sido==$("#sido").val());
var sigugunIdx=hangjungdong.sigugun.findIndex(i=>i.sigugun==$("#sigugun").val()&&i.sido==$("#sido").val());
var dongIdx=hangjungdong.dong.findIndex(i=>i.dong==$("#dong").val()&&i.sigugun==$("#sigugun").val()&&i.sido==$("#sido").val());
cs

시도는 인덱스를 하나가지고 찾지만 시군구는 시와 시군구 값으로 검색해야 하고 동은 시, 시군구, 동값으로 찾아야 한다.  저 위의 제이슨 값이 이렇게 해야 정확한 값을 찾게 설정되어 있다. 

이렇게 하면 우리가 찾고자 하는 시/도,  시/군/구, 동이 위치한 인덱스를 찾을 수 있다. 

이제 이것을 가지고 우리는 값을 찾아주기만 하면 된다. 이렇게 말이다.

1
2
3
var sido = hangjungdong.sido[sidoIdx].codeNm;//시
var sigungu = hangjungdong.sigugun[sigugunIdx].codeNm;//시군구
var dong = hangjungdong.dong[dongIdx].codeNm;//동
cs

이렇게하면 우리가 원하는 select box 값을 찾을 수 있다. 

+ Recent posts