append() 함수는 내부에 특정 HTML을 추가한다.
html() 함수는 아예 HTML을 교체한다고 생각하자.
let size = [26, 28, 30, 32, 34, 36] //바지 사이즈
$('#option1').on('change', function() { //여기서는 옵션을 선택하고 포커스를 잃을 때라서, change를 사용했다.
$('#option2').html(''); //빈 공간으로 초기화
if ($('#option1').val() == '셔츠') {
let temp = //JS로 HTML요소를 추가한다.
`<option>95</option> // `` 백틱은 문장을 공백이 있어도 그대로 쓸 수 있다.
<option>100</option>
<option>105</option>`;
$('#option2').append(temp);
} else if ($('#option1').val() == '바지') {
size.forEach(function(i) { //자바 신 문법중에서 forEach를 사용했다.
let temp = `<option>${i}</option>`; //단, 인덱스가 아니라 데이터가 들어간다.
$('#option2').append(temp);
});
// 물론, 아래처럼도 할 수 있다.
// for (let i = 0; i < 6; i++) { //일반적인 반복문을 이용했다.
// let temp = `<option>${size[i]}</option>`; //대신 인덱스가 들어간다.
// $('#option2').append(temp);
// }
}
});
데이터를 HTML에 꽂아넣어보자.
데이터는 var products 라는 변수 안에 저장이 되어있다. 일단 서버가 보낸 데이터라고 생각하자.
실제 개발현장에서도 자바스크립트 변수 이런데에 저장되어있다.
양수(+)를 return 하면 a를 오른쪽 b를 왼쪽으로 보냄
음수(-)를 return 하면 a를 왼쪽 b를 오른쪽으로 보냄
//가격순 정렬
$('#sort-price').click(function() {
newProducts.sort(function(a, b) {
return a.price - b.price; //양수면 a가 더 크므로, b보다 오른쪽
});
priceResult(newProducts);
});
//가나다순 정렬
$('#abc').click(function() {
newProducts.sort(function(a, b) {
if (a.title < b.title) // ㄱ < ㄴ이므로, 빠른 글자가 왼쪽으로 감
return -1;
else
return 1;
});
priceResult(newProducts);
});
var array = [7, 3, 5, 2, 40];
var newArray = array.map(function(a) {
return a * 2
})
기존 array를 변형하지 않는 신 문법이라, 새로운 변수에 담아서 사용해야한다.
//필터 금액 조건
$('#filter-price').on('change', function() { //input 조건을 입력한 뒤에
newProducts = products.filter(function(a) { //새로운 변수에 담음
return a.price <= $('#filter-price').val(); //범위 필터
});
priceResult(newProducts);
});