1
我有以下代码:嵌套变量中获得正确递增
'use strict';
// Data
class cat {
constructor(name, picture, clicks) {
this.name = name;
this.picture = picture;
this.clicks = clicks;
}
};
var cat1 = new cat('Mercury', 'cat1.jpg', 0);
var cat2 = new cat('Venus', 'cat2.jpg', 0);
var cat3 = new cat('Mars', 'cat3.jpg', 0);
var cat4 = new cat('Jupiter', 'cat4.jpg', 0);
var cat5 = new cat('Saturn', 'cat5.jpg', 0);
var cat6 = new cat('Neptune', 'cat6.jpg', 0);
var cats = [cat1, cat2, cat3, cat4, cat5, cat6];
// Program
for (var i = 0; i < cats.length; i++) {
// Current cat
var icat = cats[i];
$('#cat_list').append('<li id="cat' + (i + 1) + '">' + icat.name + '</li>');
$('#cat' + (i + 1)).on('click', (function(iSaved, icatSaved) {
return function() {
console.log('You clicked on cat' + (iSaved + 1) + ' from the list!');
$('#cat_title').text(icatSaved.name);
$('#cat_image').attr('src', 'img/' + icatSaved.picture);
$('#catClicks').text(icatSaved.clicks);
$('#cat_image').on('click', function() {
icatSaved.clicks++;
$('#catClicks').text(icatSaved.clicks);
});
};
})(i, icat));
};
它的工作原理不同的是增加了有问题的猫对象的点击次数嵌入式单击处理大。看起来,点击增量最终会影响多个猫对象,并且在单击图片时还会使其中一些增加2,3或4。我必须做些愚蠢的事情来获得这种行为,但我不确定是什么。这是因为我在列表单击处理程序中嵌入了单击处理程序?
-Jim
谢谢!我看不到它,但现在你解释它是完全合理的。我喜欢你的方法 - 我还没有完全理解这一点,但我有一些很好的材料来了解它。这似乎不如我的方法复杂。 –
不客气!很高兴我能帮上忙。 –