2017-11-03 1 views
0

내가 JS 스크립트와 "카운터"ID로 사업부가 있습니다자바 스크립트 내 경제 성장을 계산

var START_DATE = new Date("January 1, 2017 00:00:00"); // data de start 
 
var INTERVAL = 1; // in secunde 
 
var INCREMENT = 1400.53; // crestere per secunda 
 
var START_VALUE = 1400.53; // valoare initiala 
 
var count = 0; 
 

 
window.onload = function() { 
 
    var msInterval = INTERVAL * 1000; 
 
    var now = new Date(); 
 
    count = parseInt(((now - START_DATE)/msInterval) * INCREMENT + START_VALUE); 
 
    document.getElementById('counter').innerHTML = count; 
 
    setInterval("count += INCREMENT; document.getElementById('counter').innerHTML = parseInt(count);", msInterval); 
 

 
};
<div id="counter"></div>

이 스크립트는 후 2017의 시작 부분에서 초당 내 경제 성장을 계산을 일정 금액.

내 문제는 : 5 개의 다른 START_VALUE 번호가 있으므로 5 개 카운터에서 5 개의 카운터를 내 보내야합니다. 어떻게 동일한 코드를 사용할 수 있지만 전체 스크립트를 복제하지 않을 수 있습니까? 내가 바꿀 필요가있는 것은 var START_VALUEvar INCREMENT입니다!

+0

는' – ChrisRockGM

+0

네,하지만 어떻게 그 스크립트에 해당 기능을 구현하는 ? 나는 그것을 할 충분한 지식이 없습니다. –

답변

0

기본 자바 스크립트를 학습하는 데 유용한 리소스가 있습니다. 간단한 Google 검색을 통해 this과 같은 것으로 연결됩니다.

코드를 재사용하는 가장 쉬운 방법은 함수를 만드는 것입니다. 함수는 입력 내용을 기반으로 출력을 변경하는 인수를 사용합니다. 수학에서 f(x) = x^2과 같은 것을 생각할 수 있습니다. x이 입력이고 어떤 결과는 y입니다. 귀하의 경우에는

이 함수는 다음과 같이 보일 것입니다 : 내가 거의 변경하는 데 필요한 일을 제외하고, 코드를 변경하지 방법

var START_DATE = new Date("January 1, 2017 00:00:00"); // data de start 
 
var INTERVAL = 1; // in secunde 
 
var count = 0; 
 

 
function countFunc(id, start_value, increment) { 
 
    var msInterval = INTERVAL * 1000; 
 
    var now = new Date(); 
 
    count = parseInt(((now - START_DATE)/msInterval) * increment + start_value); 
 
    document.getElementById(id).innerHTML = count; 
 
    setInterval("count += " + increment + "; document.getElementById('" + id + "').innerHTML = parseInt(count);", msInterval); 
 
} 
 

 
countFunc("counter1", 1000, 1000); 
 
countFunc("counter2", 1400, 1400); 
 
countFunc("counter3", 1500, 1500); 
 
countFunc("counter4", 1600, 1600); 
 
countFunc("counter5", 1000, 1000);
<div id="counter1"></div> 
 
<div id="counter2"></div> 
 
<div id="counter3"></div> 
 
<div id="counter4"></div> 
 
<div id="counter5"></div>

알 수 있습니다. 당신은 바른 길을 가고있었습니다. 시작 값과 증가 값을 변경해야합니다. 이 경우 id는 모든 div에 대해 변경해야합니다. JSON과

+0

도와 주셔서 감사합니다! 그러나이 스크린 샷에서 볼 수 있듯이 모든 카운터는 동일한 값을 반환합니다. http://prntscr.com/h5stoj –

+0

@AdelinCraita 이러한 숫자는 모두 동일하지 않습니다. 8, 9, 10 자리를보세요. – ChrisRockGM

+0

@ 예 코드가 제대로 작동하지 않습니다. 우리는 11 월에 있습니다. 따라서 첫 번째 카운터를 1400.53으로 구현하면 그 결과는 37 ... 등으로 시작해야합니다. 실행 코드 스 니펫에서 2-3 번 클릭하면 그 결과를 볼 수 있습니다! –

0

시도 일 (VAR 아이디, var에 START_VALUE, var에 INCREMENT) '매개 변수로 함수를 만듭니다

var START_DATE = new Date("January 1, 2017 00:00:00"); // data de start 
 
var INTERVAL = 1; // in secunde 
 
var FULL_DATA = [ 
 
    {START_VALUE: 1400.53, INCREMENT: 1400.53, count: 0 }, 
 
    {START_VALUE: 1401.53, INCREMENT: 1401.53, count: 0 }, 
 
    {START_VALUE: 1402.53, INCREMENT: 1402.53, count: 0 }, 
 
    {START_VALUE: 1403.53, INCREMENT: 1403.53, count: 0 }, 
 
    {START_VALUE: 1404.53, INCREMENT: 1404.53, count: 0 } 
 
] 
 
var msInterval = INTERVAL * 1000; 
 
var now = new Date(); 
 
function inc(){ 
 
    for(var i in FULL_DATA){ 
 
    \t   var data = FULL_DATA[i]; 
 
     if (data.count == 0){ 
 
\t   data.count = parseInt(((now - START_DATE)/msInterval) * data.INCREMENT + data.START_VALUE); 
 
    \t \t  }else{ 
 
    \t  \t data.count += data.INCREMENT; 
 
    \t   } 
 
     document.getElementById('counter' + i).innerHTML = parseInt(data.count); 
 
    } 
 
} 
 
setInterval(inc, msInterval);
<div id="counter0"></div> 
 
<div id="counter1"></div> 
 
<div id="counter2"></div> 
 
<div id="counter3"></div> 
 
<div id="counter4"></div>