어디가 잘못 됐는지
j부분은 완벽히 도는데
i부분이 4번 돌아야하거든요 근데 한 번만 돌고 안 돌아요....
ITEM_LIST에 있는 아이템들 불러오는건데
cate_no = 7 이라고 하면 i = 28; i < 32; i++;
이니까 i가 4번 도는게 맞는데... 28..29...30...31...
1번 돌.... 저도 돌겠...
그래서 j 쪽에 보면 i가 28일때 그 배열에 있는 애들 쫙 불러오는건 되는데
그 다음에 i가 29일때 부터는 못 불러와요... 살려주세요... 포트폴리오 만드는 중인데 ㅠㅜ 하아아....
for(let i = (4*Number(cate_no)); i < (4*Number(cate_no))+Number(4); i++) {
for(let j = 0; j < Number(ITEM_LIST[i].length)+Number(1); j++) {
let list = `
<div class="sec_s_box">
<div class="sec_item_img">
<img src="./img/main/sec${ITEM_LIST[i][j].sec}/${ITEM_LIST[i][j].img}.jpg" alt="">
</div>
<div class="item_box">
<div class="item_name">${ITEM_LIST[i][j].title}</div>
<div class="o_price">${ITEM_LIST[i][j].WON}${ITEM_LIST[i][j].o_price}${ITEM_LIST[i][j].comma}${ITEM_LIST[i][j].OOO}</div>
<div class="s_price">${ITEM_LIST[i][j].WON}${ITEM_LIST[i][j].s_price}${ITEM_LIST[i][j].comma}${ITEM_LIST[i][j].OOO}</div>
</div>
</div>
`
$('.sec_box').append(list)
}
}
|
cs |
이상한데... console.log 쳐봐도 29 30 31 32 잘 나오는데...
ITEM_LIST[i] 부분이 잘못 된게 아닐까용
Number(ITEM_LIST[i].length)+Number(1);
혹시 다른 오류는 안 보이시나요?? 안 보인다면.. 그러면 말씀하신 부분 정보를 제가 다시 봐야겠군요. 제발...
1번째 for문은 몬다이나이 해보이고 2번째에서 문제가 생기는거 같아보이는데요
헐 센세.. 감사합니다. Number(ITEM_LIST[i].length)+Number(1); 이 부분 유심히 보고 +Number(1); 이거만 지웠는데 포문이 다 돌아요... 왜지....
아 length 메서드는요 말그대로 n개가 출력이 되는데 배열 출력하려면 n-1로 인덱스를 잡아줘야하기 때문에 Number(1)이 없어도 됨 ㅇㅇ
아님 말고
그렇군요... 그런 것 같아요...!
두번때 for 문 number(1) 때문에 인덱스 out of bound 에러 나서, 두번째 for문 안가는거. 리스트는 0부터 시작하니까 +number(1)이 필요없음. 일반적인 자바 프로그램이라면 exception 나니까 알 수 있는데, html이니까 화면에 출력되니 첫번째 for 성공한거처럼 보이지만 사실은 이때 그때 에러난거.
아 이런... 그냥 1부터 시작했으면 +number(1) 안 해도 됐을텐데... 아직 제가 생각이 컴퓨터가 아니라 사람 같이 생각하나봅니다. ㅠㅜ
왜 Number(1) 같은 걸 쓰시는 거죠 근데 숫자에 객체 씌워봤자 바뀌는 것도 없고 손해만 생길 탠데... 문자열에서 변환하려고 쓰는 건 이해할 수 있지만, 그마저도 parse int나 +같은 꼼수도 있고요.
어... 그거슨 제가 이제 막 배우는 학생이기 때문이죠.... 는 무의식의 흐름입니다...
자바스크립트 형변환이 좀 괴상망측하긴 한데, 보통 가능하면 Number나 String을 형변환에 쓰지 않기를 권합니다. 이들은 원시(primitive) 자료형을 감싸는 래퍼 객체이므로, 원시 자료형을 그대로 쓰는 것보다 성능이 저하될 수 있기 때문입니다. 물론 코드가 더 명확해 보인다고 쓰는 사람도 있지만...
지난번에 하는데 -는 형변환을 하지 않아도 괜찮았는데 +는 형변환을 안 하니까 7+1이 71로 바뀌더군요 ㄷㄷ.. 그래서 Number를 막 쓰게 된 것 같습니다. 타입스크립트인가 추천하시는 분도 계시던데 뭔지 모르기도 하고요...
자바스크립트 암시적 형변환이 좀 이상해요. php랑 함께 기괴한 언어 설계로 악명 높습니다. 이건 문자열+숫자=문자열+문자열로 암시적 형변환이 나와서 그렇습니다. 문자열-문자열은 없으니 앞 값을 숫자로 변환을 시도하고, 성공하면 숫자-숫자로 하고요. 이건 어딘가에서 자료형이 마구 뒤섞이고 있다는 뜻인데, 그 부분을 찾아 그것만 숫자로 변환해주면 될 겁니다. 1같은 리터럴에 굳이 씌워주지 않아도요. 타입스크립트는 자바스크립트에 자료형 표시를 추가한 확장 언어인데, 자료형 표시가 잘 되어있으면 그를 추론해서 잘못된 사용법을 경고해줍니다. 예컨대 숫자가 들어갈 자리에 a+3을 넣었는데, a가 문자열이라면 숫자가 들어갈 곳에 문자열이 들어갔다고 경고해주는 식입니다. 타입스크립트의 특징은 자바스크립트의 상위집합이라는 거라서, 자바스크립트만 알면 쉽게 쓸 수 있습니다. 일단 자바스크립트에 충분한 자신감을 갖게 되시면 시도해 보세요.
엌ㅋㅋ 감사합니다. 충분한 자신감이라니...!