티스토리 뷰
javascript를 활용해서 실시간으로 검색 정보를 받아오자. (https://github.com/KIMSG/javascript30/tree/master/day6)
소스에 기본 json데이터는 포함되어 있고 문법만 배우면 된다.
1
2
3
|
function numberWithCommas(x){
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
|
숫자가 들어오면 3단위씩 나누어 , 를 표시한다.
1
2
3
|
fetch(endpoint)
.then(blob => blob.json())
.then(data => cities.push(...data))
|
fetch API를 이용해서 AJAX를 대체 하는 것이다.
then만 써주면 복잡한 문법없이 쓸 수 있다.
기본 문법에서는 fetch(url) 이지만 여기서는 data의 url을 바로 넣어서 사용했다.
fetch 활용하기 : https://hjlog.me/post/150
1
2
3
4
5
6
|
function findMatches(wordToMatch, cities){
return cities.filter(place => {
const regex = new RegExp(wordToMatch, 'gi');
return place.city.match(regex) || place.state.match(regex)
});
}
|
findMatches 함수에서는 인자를 두개를 받는다.
Filter()는 저번에 array를 실습할 때 배운 함수이다. callback이 ture이면 배열로 새로운 인자를 담는다.
입력받은 단어를 wordToMatch라고 한다.
'new RegExp' 은 정규식으로 생성자를 만들때 사용한다.
입력된 단어를 정규식을 사용하여 대문자, 소문자를 구분하지 않고 regex로 담는다,
city, state 중 동일한 단어가 있으면 반환한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function displayMatches(){
const matchArray = findMatches(this.value, cities);
const html = matchArray.map(place => {
const regex = new RegExp(this.value, 'gi');
const cityName = place.city.replace(regex, `<span class="hl">${this.value}</span>`);
const stateName = place.state.replace(regex, `<span class="hl">${this.value}</span>`);
return `
<li>
<span class="name">${cityName}, ${stateName}</span>
<span class="population">${numberWithCommas(place.population)}</span>
</li>
`;
}).join('');
suggestions.innerHTML = html;
}
|
위 함수에서 반환된 결과값을 담아 html의 문자열로 만들어 준다.
replace() : 일치하는 부분을 원하는 문자열로 반환합니다.
replace(‘앞의 내용을 찾으면’, ‘뒤의 내용으로')
정규식과 일치하는 문자열을 찾을 때마다 span 태그로 치환한다. (그러면 해당 부분만 노란 영역이 된다.)
1
2
3
4
5
|
const searchInput = document.querySelector('.search');
const suggestions = document.querySelector('.suggestions');
searchInput.addEventListener('change', displayMatches);
searchInput.addEventListener('keyup', displayMatches);
|
searchInput이 change, keyup 될 때마다 해당 함수를 발생시킨다.
addEventListener : https://developer.mozilla.org/ko/docs/Web/API/EventTarget/addEventListener
- : 흐리게
- : 클릭
- : 더블 클릭
- : 키를 누를때
- : 키를 뗄때
( 알아두어야 할 기능이 많은 것 같다.
'WEB 웹 > JAVASCRIPT' 카테고리의 다른 글
Fun with HTML5 Canvas (javascript30 - 8) (0) | 2017.11.21 |
---|---|
Array Cardio 2💪💪(javascript30 - 7) (0) | 2017.11.20 |
Flex Panels (javascript30 - 5) (0) | 2017.11.20 |
Array Cardio (javascript30 - 4) (0) | 2017.11.17 |
Playing with CSS Variables and JS (javascript30 - 3) (0) | 2017.11.14 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 위잇딜라이트
- server.xml
- 오라클
- 힘냉면록
- SQL
- 톰캣
- jstree
- Oracle
- html
- 메뉴관리
- tree로만들기
- Eclipse
- 이클립스
- 최고심
- 아파치
- floating button
- 성수뚝떡
- 정규식
- 맥
- 성수밥
- node관리
- Apach
- Tomcat
- 조직도관리
- input
- Lalavel
- 터미널
- Mac
- 르프리크
- 토라식당
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함