2012-12-14 5 views
0

작동하지 않습니다 그래서이 코드가 있습니다 http://jsfiddle.net/7rGSb/1/기능은

var volumeDiv = document.getElementById("volumeNumber"); 
var volumeOld = 8; 
var volumeNew = 37; 
var timeNew = (1000/(volumeNew - volumeOld)); 
changeVolume(); 

function changeVolume() { 
    volumeDiv.innerHTML = volumeOld; 
    volumeOld++; 
    if (volumeOld <= volumeNew) setTimeout(changeVolume, timeNew); 
};​ 

은 1 초에 37 8에서가는 캐릭터이다를. 잘 작동합니다. 왜

$(function() { 
    $("#Volume").click(function() { 

     setTimeout(triggerVolumeChange, 4000); 

     function triggerVolumeChange() { 

      var volumeDiv = document.getElementById("volumeNumber"); 
      var volumeOld = 8; 
      var volumeNew = 37; 
      var timeNew = (1000/(volumeNew - volumeOld)); 
      changeVolume(); 

      function changeVolume() { 
       volumeDiv.innerHTML = volumeOld; 
       volumeOld++; 
       if (volumeOld <= volumeNew) setTimeout(changeVolume, timeNew); 
      }; 

     }; 

    }); 
});​ 

어떤 생각 : 내가 클릭 이벤트 핸들러 (http://jsfiddle.net/wH2qF/1/)에 넣어하려고 할 때

은 그러나, 작업을 중지?

다른 기능 안에 changeVolume();을 호출했기 때문입니까? 그렇다면 어떻게 호출 할 필요없이 그 기능을 작동시킬 수 있습니까?

+0

왜 중첩 된 함수가 있습니까 ?? –

+0

@ Sushanth-- 내 추측은 범위 지정 또는 사고 일 것입니다. 함수는 항상 중첩되어 있지만 때로는 이와 같이 명확하지 않습니다. –

+0

저는 JS에 매우 익숙해 져서 코드가 구조화 된 방식에 대해 사과하고 있습니다. 아마도 그것이 작동하지 않는 이유 일 수 있습니다. 문제를 해결하는 방법에 대한 아이디어가 있습니까? 기본적으로 사용자가 버튼을 클릭 한 후 8-37 4 초 후에 해당 문자열이 필요합니다 ... (설계중인 응용 프로그램의 시뮬레이션 환경 용) – ttothec

답변

4

당신은 MooTools을 선택했지만 jQuery의 .ready()과 DOM 선택 구문을 사용하고있는 것으로 보입니다.

왼쪽의 메뉴에서 jQuery 옵션 중 하나를 선택하십시오. 또는 외부 $(function() {...});을 제거하고 선택/처리기 코드를 업데이트하십시오.

+1

45 초 만에 나를 이길 수 있습니다! – Malvolio

+0

죄송합니다 .. 나는이 프로젝트에 착수했다. 나는 빡빡한 일정으로이 문제를 해결하려고 필사적으로 노력하고있다. 그래서 내 "코딩"의 대부분은 헛소리 및 기타 문서 사이트의 조각을 붙여 넣는 것으로 나온다. 나는 온라인을 본다 ...이 바이올린에 주어진 당신의 대답에 관해서 : http://jsfiddle.net/wH2qF/1/ 클릭 할 때이 기능을 제대로 수행하기 위해 필요한 변경을해야 할 곳을 표시 할 수 있습니까? 대단히 감사합니다! – ttothec

+0

@ttothec : jsFiddle 페이지의 왼쪽에는'MooTools 1.4.5'가 현재 선택된 메뉴가 있습니다. 해당 메뉴를 클릭하고 대신'jQuery 1.8.2'를 선택하십시오. * (물론 상단의'Run'을 클릭하십시오.) * –

1

왜 ..

은 또한 프레임 워크가 jQuery를로 설정되어 있는지 확인 외부

$(function() { 
    $("#Volume").click(function() { 
     setTimeout(triggerVolumeChange, 4000); 
    }); 
}); 

var volumeDiv = document.getElementById("volumeNumber"); 
var volumeOld = 8; 
var volumeNew = 37; 
var timeNew ; 

function triggerVolumeChange() { 
    timeNew = (1000/(volumeNew - volumeOld)); 
    changeVolume(); 
}; 

function changeVolume() { 
    volumeDiv.innerHTML = volumeOld; 
    volumeOld++; 
    if (volumeOld <= volumeNew) 
     setTimeout(changeVolume, timeNew); 
};​ 

에 함수 선언을 이동 ..이 시나리오에서 필요하지 않은 때 중첩 기능을해야합니까

Check Fiddle