jQuery 스크립트 안에서의 for문 질문 드립니다.

jQuery 스크립트 안에서의 for문 질문 드립니다.

QA

jQuery 스크립트 안에서의 for문 질문 드립니다.

본문

안녕하세요. 궁금한게 많은 초보라 또 질문이 있습니다...ㅠ_ㅠ

 

제가 원하는 결과물은 아래와 같습니다.

 

<a href="#1" class="link1"><img src="./img/1.jpg" /></a>

<a href="#2" class="link2"><img src="./img/2.jpg" /></a>

<a href="#3" class="link3"><img src="./img/3.jpg" /></a>

<a href="#4" class="link4"><img src="./img/4.jpg" /></a>

<a href="#5" class="link5"><img src="./img/5.jpg" /></a>

 

<script type="text/javascript">
 $(document).ready(function () {
  $('a.link1').gips({ 'theme': 'purple',text: ' 1번 이미지입니다.' });
  $('a.link2').gips({ 'theme': 'purple',text: ' 2번 이미지입니다.' });
  $('a.link3').gips({ 'theme': 'purple',text: ' 3번 이미지입니다.' });
  $('a.link4').gips({ 'theme': 'purple',text: ' 4번 이미지입니다.' });
  $('a.link5').gips({ 'theme': 'purple',text: ' 5번 이미지입니다.' });
 });
</script>

 

위처럼 결과를 얻고자 아래처럼 for문을 썼습니다.

 


<?php
 for ($i=1; $row=sql_fetch_array($result); $i++) {
  echo '<a href="#'.$i.'" class="link'.$i.'"><img src="./img/'.$i.'.jpg" /></a>';
 }
?>
<script type="text/javascript">
 $(document).ready(function () {
 <?php
  for ($i=1; $row=sql_fetch_array($result); $i++) {
 ?>
  $('a.link<?php echo $i;?>').gips({ 'theme': 'purple',text: ' <?php echo $i;?>번 이미지입니다.' });
 <?
  }
 ?>
 });
</script>

 

이렇게 했더니 결과물이 아래처럼 나옵니다.

 


<a href="#1" class="link1"><img src="./img/1.jpg" /></a>
<a href="#2" class="link2"><img src="./img/2.jpg" /></a>
<a href="#3" class="link3"><img src="./img/3.jpg" /></a>
<a href="#4" class="link4"><img src="./img/4.jpg" /></a>
<a href="#5" class="link5"><img src="./img/5.jpg" /></a>
 
<script type="text/javascript">
 $(document).ready(function () {
 });
</script>

 

즉 jquery 안에 있는

$('a.link<?php echo $i;?>').gips({ 'theme': 'purple',text: ' <?php echo $i;?>번 이미지입니다.' });

이 부분이 루프 되지 않거나 잘못된 것 같은데

어떻게 하면 원하는 결과물을 얻을 수 있을까요?

이 질문에 댓글 쓰기 :

답변 2

sql_fetch_array() 는 한 레코드씩을 가져옵니다.

첫번째 루프문에서 모든 레코드를 가져왔기 때문에, 다음 루프문에서는 가져올 것이 없게 됩니다.

 

for ($i=1; $row=sql_fetch_array($result); $i++) {

  $list[$i] = $row;

$cnt_list = count($list);

로 별도의 배열 변수에 담은 다음, 두 곳의 루프문을 다음과 같은 식으로 고쳐주는 방법이 있습니다.

 

for ($i=1; $i <= $cnt_list; $i++) {

 

 

* 별도로, jquery 구문만으로 처리하는 방법은 다음과 같습니다.

$('a[class^=link').gips({'theme': 'purple', text: ' ' + $(this).attr('class').slice(-1) + '번 이미지입니다.' });                   

감사합니다.
구글에서 찾다보니
"전체 데이터를 배열에 담아두고, 이후로는 배열을 순회하면서 사용하는 편입니다"
라는 말이 나왔는데도 이해를 못했는데
적어 주신 코드를 보니 이해가 됩니다.

감사합니다!!

같은 sql_fetch_array($result) 를 하려면 index의 위치를 0으로 옮겨서 실행해주어야합니다.

mysql_data_seek 을 이용해서 0으로 옮겨주세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 78
QA 내용 검색
filter #for ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT