c:forEach문의 index 가져오기
Javascript에서 jsp의 forEach의 순번을 어떻게 가져오나 고민했다.
varStatus도 모르겠고 그냥 1~n이니까 나도 for문 돌리려다가 실패했다.
화가 빡빡 났다. 나의 짧은 지식에 분개했다.
두 가지의 문제였다.
- forEach 돌면서 바뀌는 div의 index 가져오는 법
- 해당 index의 aId의 값 가져오기
- javaScript에서 배열의 key에 변수 넣는 법
해당 query
<c:forEach var="a" items="${aList}">
<div class="div" id="a${a.aId}">
<c:choose>
<c:when test="${not empty a.aHTML}">
<div class="page type01">
<input type="hidden" name="a_id" value="${a.aId}">
</div>
</c:when>
</c:choose>
</div>
</c:forEach>
<script>
aDiv.forEach((a, index) => {
let aId = a.querySelector('input[name=a_id]').value;
list.push({[aId] : testA(a, aType)});
});
</script>
1. a는 VO Class의 이름이자 값이 저장된 저장 공간이다. 내가 원하는 건 돌아가는 div의 index와 해당 index의 aId의 값.
원래 aId의 값을 가진 div가 따로 있었는데 그 div의 Id 값이 "a${a.aId}' 형식으로 되어 있었다. 그걸 가져오는 수를 도저히 찾을 수가 없어서 결국 input
을 추가했다. name은 임의로 지어 주면 되고, value에 원하는 값을 넣어서 DOM으로 가져온다.
<input type="hidden" name="a_id" value="${a.aId}">
let aId = a.querySelector('input[name=a_id]').value;
2. 그리고 a.querySelector
forEach문 parameter로 a를 받아 왔고 돌고 있기 때문에(a1, a2, a3...), 해당 item의 해당 aId를 위하여 앞에 a를 붙여 줘야 했다.
list.push({[aId] : testA(a, aType)});
3. 해결하고 나서는 aId 변수 선언 전에 해당 query를 먼저 작성해 놨는데 변수 선언하고도 값이 이용되지 않고 있다는 message가 뜬다. list 배열에 key 값으로 a의 순번 즉 변수를 넣어야 하는데 말이다. 어렵잖게 찾았다. 변수는 [] 괄호를 써 주면 되었다.
'Language > JavaScript' 카테고리의 다른 글
[JavaScript] Canvas API 화면 위에 그리기 기능 구현, 선 그리기 (0) | 2022.07.12 |
---|---|
[JavaScript] Javascript에서 session 사용 (0) | 2022.07.08 |
[JavaScript] 대괄호, 중괄호, 소괄호의 종류 (0) | 2022.07.07 |
[JavaScript] 화살표 함수 (0) | 2022.06.14 |
[JavaScript] DOM이란? (0) | 2022.06.07 |