2016-08-29 3 views
1

나는 매초마다 업데이트하는 특정 타이머를 가지고 있습니다. 나는 타이머 변수의 변화에 ​​어떤 기능을 실행하고 싶다. 누구든지 나를 도울 수 있다면. 아래 코드를 제공했습니다.jQuery를 사용하여 타이머 변수의 변화를 감지하십시오.

for(var i=0; i<listingTime.length; i++){ 
    if (listingTime[i].time >= 0) { 
     var second = listingTime[i].time/1000; 
     var currentHour = parseInt(second/3600); 
    } 
} 

여기에서 currentHour 변수의 변화를 감지하고 싶습니다.

+0

다른 변수가 필요합니다 ... 'previousHour'라고 부르세요. - 좋은 시작입니까? –

+0

더 많은 코드를 보여줘야합니다. 어디에서 변경을 감지하고 싶습니까? 거기에 var가 없으면 이전 값을 테스트 할 수 있습니다 – mplungjan

+0

확인하십시오 http://stackoverflow.com/questions/1759987/listening-for-variable-changes-in-javascript-or-jquery –

답변

3

루프 이전에 이전 값 변수를 설정할 수 있으며 currentHour를 업데이트 할 때마다 previousValue 변수와 일치시킵니다. 동일하지 않으면 변경되지 않으며 변경되지 않으면 콜백을 실행할 수 있습니다.

또 다른 방법은 객체 프로토 타입을 사용하여 currentHour의 값을 변경하는 것입니다.

코드 위

가 changeListner

var HourListner = { 
 
    currentHour: null, 
 
    update: function(newValue, callback){ 
 
    
 
    if(this.currentHour !== newValue){ 
 
     this.currentHour = newValue; 
 
     callback(newValue); 
 
    } 
 
    } 
 
} 
 
timer = Object.create(HourListner); 
 

 
var changeListner = function(value){ 
 
    //value is the new value of currentHour 
 
    console.log(value) 
 
} 
 

 
for(var i=0; i<listingTime.length; i++){ 
 
    if (listingTime[i].time >= 0) { 
 
     var second = listingTime[i].time/1000; 
 
     var currentHour = parseInt(second/3600); 
 
     timer.update(currentHour, changeListner) 
 
    } 
 
}
를 추가하려면 다음에 수정 될 수 있습니다 그리고 트릭은 다음 코드에서 독립적으로 테스트 할 수 있습니다 :
var HourListner = { 
 
    currentHour: null, 
 
    update: function(newValue, callback) { 
 

 
    if (this.currentHour !== newValue) { 
 
     this.currentHour = newValue; 
 
     callback(newValue); 
 
    } 
 
    } 
 
} 
 
timer = Object.create(HourListner); 
 

 
var changeListner = function(value) { 
 
    //value is the new value of currentHour 
 
    console.log(value) 
 
    $('body').append('<p>'+value+'</p>') 
 
} 
 
var interval = setInterval(function(){ 
 
    var t = new Date(); 
 
    timer.update(t.getMinutes(), changeListner) 
 
}, 200)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

다음 코드는 것을 보여준다

이전 값과의 변경이있을 경우 changeListner이 실행됩니다.

+0

@mplungjan 코드 단편은 콘솔에 대한 피드백을 제공하며 질문 작성자가 입력 한 코드 블록에 따라 다릅니다. – Pankaj

+0

다른 스 니펫을 추가하고 확인했습니다. – Pankaj

관련 문제