如何使用其容器

时间:2016-02-17 10:59:29

标签: javascript jquery setinterval

我有这个代码,当我点击“添加”时,它会向数组中添加一个新人。然后当我点击“点击”按钮时它应该改变数组中该人的属性,并在setInterval()计时器中使用这些新属性(特别是' interval'),即' person.hours'。

我希望这样做,因为我需要为每个人单独做这件事。

我需要添加代码的主要内容如下。

//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>
&#13;
&#13;
&#13;

这也是一个小提琴:http://jsfiddle.net/reko91/nVyXS/1726/

可以让事情更容易测试,提前谢谢:)

1 个答案:

答案 0 :(得分:2)

我不确定你想要实现的目标,但我相信你必须用新的间隔替换“// restart interval” 有类似的东西:

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

您的代码只会影响数组中的第一个人,但我想您知道;)