2016-02-17 155 views
-2

我有這段代碼,當我點擊「添加」時,它將一個新人添加到數組中。然後,當我點擊'click'時,它應該改變數組中該人的屬性,並在setInterval()定時器中使用這些新屬性(特別是'interval'),即'person.hours'。如何使用其容器中的屬性停止並重新啓動setInterval()

我希望這樣做,因爲我需要爲每個「個人」單獨執行此操作。

我需要添加代碼的主線如下。

//restart interval here with new interval 
//so re-run personArray[0].hours with the new personArray[0].interval 

但我不能確定如何重新啓動與更新的屬性對象的時間間隔。

var personArray = []; 
 

 
function person(name, age, workhours, interval) { 
 
    this.name = name; 
 
    this.age = age; 
 
    this.workhours = workhours; 
 
    this.interval = interval; 
 
    this.hours = setInterval(function() { 
 
    console.log('hello') 
 

 
    }, interval); 
 
} 
 

 
person.prototype.update = function() { 
 

 
    clearInterval(this.hours); 
 
    this.hours = setInterval(function() { 
 
    console.log('newhello'); 
 
    //i want to log the persons name here 
 
    console.log(this.name) 
 
    
 
    }, this.interval); 
 
} 
 

 
$('#add').click(function() { 
 
    personArray.push(new person('fred', 15, 20, 500)) 
 
}); 
 

 

 
$('#click').click(function() { 
 
    console.log(personArray[0]); 
 
    clearInterval(personArray[0].hours); 
 
    personArray[0].interval = 100; 
 
personArray[0].update(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id='add'> 
 
    add 
 
</button> 
 

 
<button id='click'> 
 
    click me 
 
</button>

這裏也是一個小提琴:http://jsfiddle.net/reko91/nVyXS/1726/

可能使事情變得更容易考出來的,在此先感謝:)

回答

2

我不能肯定你想要什麼實現,但我相信你必須用類似的東西替換「/ /重新啓動時間間隔這裏用新的時間間隔」 :

personArray[0].hours = setInterval(function() { console.log('hello') }, personArray[0].interval);

您的代碼只能影響到陣列中的第一人,但我猜你應該知道;)

+0

這完美的作品。然而,我錯過了我的代碼的一個重要部分,因爲這是我正在工作的簡化版本。我已經設法解決了這個問題,但最初我要求的是,你解決了,謝謝 – thatOneGuy

相關問題