자바스크립트 배열 질문드립니다..

자바스크립트 배열 질문드립니다..

QA

자바스크립트 배열 질문드립니다..

본문


 <script src="<?=$board_skin_url?>/noUiSlider-14.1.1/distribute/nouislider.js"></script>
<link rel="stylesheet" href="<?=$board_skin_url?>/noUiSlider-14.1.1/distribute/nouislider.css">
   <?for($i=0;$i<=3;$i++){?>          
       <fieldset style='border:1px;'><p class='no-drag'><?=chr($i+97)?>상수</p>
    <div class="bo_w_tit write_div">
         <div id="slider-direction[<?=$i?>]"></div>
        <select id="input-select[<?=$i?>]"></select>
        <input type="button" id="write-button[<?=$i?>]" value="초기화">
        <input type="button" id="read-button[<?=$i?>]" value="현재값 출력">
        <input type="text"   id="field[<?=$i?>]" name="field[<?=$i?>]" class="field" style="border:0px;"readonly="" onfocus="this.blur();">
        <input type="number" id="input-number[<?=$i?>]" name="input_number[<?=$i?>]" min="-15" max="15" value="0" >
                <script>
// javascript
var directionSlider=new Array();
directionSlider[<?=$i?>] = document.getElementById('slider-direction[<?=$i?>]');
noUiSlider.create(directionSlider[<?=$i?>], {
    start: 0,
    step:0.01,
    connect: true,
    range: {
        'min':-15,
        'max':15
    }
});
// 0으로 초기화 하기
document.getElementById('write-button[<?=$i?>]').addEventListener('click', function () {
    directionSlider[<?=$i?>].noUiSlider.set(0);
});
// 정의한 값 alert창 띄우기
document.getElementById('read-button[<?=$i?>]').addEventListener('click', function () {
    alert(directionSlider[<?=$i?>].noUiSlider.get());
});
var num=new Array();
num[<?=$i?>] = directionSlider[<?=$i?>].noUiSlider.get();
// 현재 값 출력하기
var directionField=new Array();
var values = new Array();
directionField[<?=$i?>] = document.getElementById('field[<?=$i?>]');
directionSlider[<?=$i?>].noUiSlider.on('update', function (values, handle) {
     console.log(directionField[<?=$i?>]);
    directionField[<?=$i?>].innerHTML = values[handle][<?=$i?>];
    directionField[<?=$i?>].value=values[handle];
});
var select=new Array();
select[<?=$i?>] = document.getElementById('input-select[<?=$i?>]');
// 셀렉트 추가
for (var i = -15; i <= 15; i+=0.01) {
    var option=new Array();
    option[<?=$i?>] = document.createElement("option");
    option[<?=$i?>].text = i.toFixed(2);
    option[<?=$i?>].value = i.toFixed(2);
    if(option[<?=$i?>].value=="-0.00"){ option[<?=$i?>].value = "0.00";option[<?=$i?>].text ="0.00";}
    select[<?=$i?>].appendChild(option[<?=$i?>]);
}
var inputNumber=new Array();
inputNumber[<?=$i?>] = document.getElementById('input-number[<?=$i?>]');
//값 변동 기능 
directionSlider[<?=$i?>].noUiSlider.on('update', function (values, handle) {
    var value=new Array();
    value[<?=$i?>] = values[handle];
    if (handle) {
    } else {
        select[<?=$i?>].value = value[<?=$i?>];
        inputNumber[<?=$i?>].value = Math.round(value[<?=$i?>]);    
    }
});
select[<?=$i?>].addEventListener('change', function () {
    directionSlider[<?=$i?>].noUiSlider.set([this.value, null]);
});
inputNumber[<?=$i?>].addEventListener('change', function () {
    directionSlider[<?=$i?>].noUiSlider.set([this.value, null]);
});
</script>     
</div>
</fieldset>

안녕하세요 웹공부를 하고있는 학생입니다.

http://wnghks2516.cafe24.com/gnuboard5/Parametric/write

 

해당 페이지에서 https://refreshless.com/nouislider/

에서 제공한 슬라이드를 적용시켜 배열로 4개정도를 for문을 돌려 각각 슬라이드에 해당하는 값을 출력하고 싶은데 가장 마지막 값인 d상수부분만 나오고 있습니다.

관리자모드로 보면 innterHTML부분에서 에러가 나오는데 왜 이걸 인식못하는지 모르겠습니다.

 

 

이 질문에 댓글 쓰기 :

답변 2

PHP 와 javascript 를 섞어 쓰는듯 합니다.

for 문은 javascript 인데 그안에 값들은 PHP 값은 $i 를 쓰고 있네요 

PHP 로 javascript 를 생성하는건데.. 

 

일단 javascript 가 어떻게 됐는지 부터 확인하고 그담에 코드 디버깅이 필요하네요

 

 

해당기능 4개를 추가하기 위해 php문에서 for문 안에 소스+자바스크립트를 집어넣었었는데 이런형식으로 코딩을 하면 왜 안되는지 알려주실 수 있을까요?(정말 몰라서 질문드립니다... 독학으로 웹을 공부하다 보니 잘 모릅니다)

PHP 가 호촐되면 다음의 단계를 거칩니다.
1. PHP 페이지 번역 => html(javascript 포함) 반환
  - PHP 는 해당 소스중에 PHP 에 해당하는 부분만 번역합니다.
  - 그래서 님의 소스중에 for 문은 javascript 이므로 php 는 번역하지 않기 때문에 반복하지 않습니다.
  - javascript 문법이 아닌 $i 같은 문자만 php 가 번역해주기에 $i 는 한번만 번역됩니다.

2. php 에 의해 번역된 html 을 브라우져가 실행
  - 이때 javascript 를 실행하는데 $i 같은 값은 이미 대체 되었습니다.
  - for 문을 돌아도 $i 값은 변하지 않습니다.


문제는 php 와 javascript 의 실행시점이 다르기 때문이며 두 언어는 동시에 동작할수 없습니다.

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

회원로그인

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