나직한 문의.....
본문
var match_cnt = <?php echo $match_student?>;
for (i=0;i<student_cnt ;i++ ) {
var new_row1 = "<tr class='new_row'><th><b>*</b> </th><td> <input type='text' name='student[]' class='required' value='<?=strip_tags($match_student[1][$i])?>' >
생략
위 스크립트에서
<?=strip_tags($match_student[1][$i])?>' $i는 안나오고
이렇게 <?=strip_tags($match_student[1][3])?>' 직접 숫자를 넣어서 하면 나오는데
어떻게 해야 할까요?
여기까지는 했습니다.
<?php
$list = array($match_student[1]);
?>
<script>
$(document).ready(function () {
for (i=0;i<student_cnt ;i++ ) {
var arr1 = <?php echo json_encode($list);?> ;
var row = "<input value='"+ arr1 +" > html코드 생략" ;
이렇게 하니
20,51,90,10,527,1
이렇게 함께 나와버립니다.
i값에 해당하는게 각각나와야 하는데요,,
value='"+ arr1 +" 이부분을
어떻게 해야 할지...
value='"+ arr1[i] +" 이렇게해도 안되구요,
답변 4
if((student_cnt-1)/img_cnt >2.5) {
console.log( arr[i] );
}
위와 같이 출력해 보구 개발자 창 콘솔을 확인해 보세요
콘솔에 원하는대로 증가된 값이 나와야 되는데 그러지 못한다면
이프문이 잘못되었을 수도 있습니다
코드 짤때 도움이 될만한 몇가지를 적어봅니다
[1]. 우선 코드 분리를 하세요
자바 스크립트와 PHP 소스를 섞어서 쓰다 보면 프로그래밍 하는 사람이나 혹은 이를 보는 사람 둘다
헷갈릴 수 있습니다
전에도 살짝 얘기해 드린듯 한데 섞어서 한꺼번에 비빔밥 버무리듯 하면 맛은 있을지 몰라도
눈에 보이는 아름다움이 많이 상쇄 됩니다
되도록 소스 코드를 분리하세요
( 되도록이라고 쓰지만 필히 분리하는게 좋습니다 php코드와 자바스크립트가 섞인 코드가 1만줄 이상이라면... )
예 )
-------------------------------------------------------------------
<script>
for(var i=0; i < <?php echo $total_cnt;?>; i++){
alert(i); // 알러트 출력
}
</script>
-------------------------------------------------------------------
위의 소스는 그리 좋지 않습니다
아래와 같이 php 코드를 먼저 변수로 정의하고 그 다음 자바 스크립트만으로 소스를 짜는게 좋습니다
-------------------------------------------------------------------
<script>
// 상단에 php활요한 변수 기재 그 이후 자바스크립트 코딩
var total_cnt = '<?php echo $total_cnt;?>';
for(var i=0; i < total_cnt; i++){
alert(i); // 알러트 출력
}
</script>
또는
<script>
// 일부 php코드가 들어가서 페이지의 자바스크립트 제일 상단에 일반 변수로 기재
var total_cnt = '<?php echo $total_cnt;?>';
</script>
<script>
// 자바스크립트 코드만으로 완전 분리 ( js 파일로 따로 만들어 이곳 혹은 다른 곳에서도 재활용 가능 )
for(var i=0; i < total_cnt; i++){
alert(i); // 알러트 출력
}
</script>
--------------------------------------------------------------------
위와 같이 분리를 하는 이유는 자바스크립트 만으로 코드가 이뤄졌다면 가독성이 좀 더 원할할 뿐더러
상황에 따라 자바스크립트만을 따로 똑 떼어서 js 파일로 만들어 연결 시킬수 있기 때문입니다
재활용성이 높아집니다
php와 뒤섞여 있을때 간혹 php코드를 자바스크립트 코드로 착각하고 증가 시키거나 호출하거나
그 반대로 호출하거나 증가 시키거나 하는 실수를 범합니다
[ 2]. 배열을 활용해 보세요
for문등으로 어떠한 대상을 반복해서 사용해야 한다면 배열 활용이 크게 도움이 됩니다
예 )
var result_array = [20,51,90,10,527,1];
var total_cnt = result_array.length; // 위의 배열 갯수
for( var i=0; i < total_cnt; i++ ){
alert ( result_array[i] ); // 포문을 돌면서 배열 하나씩 출력
}
[3]. for문 안에 있는 증가 변수 ( 2번의 예에서는 ===> var i ) 에만 의존하지 마시구
상황에 따라서는 다른 변수를 지정 증가 혹은 감소를 상황에 따라 제어를 해야 합니다
즉 i 는 증가하구 다른 변수를 넣어서 상황 제어용으로 써야 합니다
예 ) 배열에 들어간 숫자가 짝수인 것의 전체 갯수는 ?
var j=0; // 짝수인것에 체크하는 증가 변수
for( var i=0; i < total_cnt; i++ ){
if(result_array[i] % 2 == 0){ // 들어온 배열이 짝수라면
alert ( result_array[i] ); // 포문을 돌면서 배열 하나씩 출력
j++; // 들어온 배열이 짝수가 전체 몇개 인지 확인용 변수
}
}
출력
alert(j); => 배열에 들어간 숫자가 짝수인 것의 전체 갯수
<?php echo json_encode($list);?>
1.정확히 위의 값이 어떻게 출력되나요
2. 결과 값이 value='20' value='51' value='90' ... 이와 같이 출력 되어야 하나요
정확히 출력되어야 할 자바스크립트 소스를 PHP코드 없이 작성해 주세요
되도록 출력 완료형으로 이렇게 이렇게 출력되어야 합니다 하구 화살표로 자리매김 해서 알려주세요
예 )
var arr1 = ['20,51,90,10,527,1' ];
for(var i=0; i < student_cnt ; i++ ) {
var arr1 = arr1[i]; // ===================> 아래 변수에 들어가는 값
var row = "<input value='"+ arr1 +" >";
}
말씀하신 부분이 자바스크립트 반복문으로 php 배열 변수를 접근하려는 모양이신데
그 부분이 잘못되신거 같습니다..
var match_cnt = <?php echo $match_student?>;
for (i=0;i<student_cnt ;i++ ) {
var new_row1 = "<tr class='new_row'><th><b>*</b> </th><td> <input type='text' name='student[]' class='required' value='<?=strip_tags($match_student[1][$i])?>' >
생략
php코드가 자바스크립트 코드 보다 먼저 수행하고 그 다음에 자바스크립트 코드가 수행하기 때문에
안되는 겁니다.
$match_student 이 값을 javascript 배열로 담아서 출력을 하시든 아니면
php코드로 다 짜셔서 하시든 하셔야 할거 같아요^^;
!-->tmp = "<?=implode(',' , $match_student[1])?>".split(',');
for (i=0;i< tmp.length; i++ ) {
new_row1 ="~~~~value='"+tmp[i]+"'>";