我有这件事。
为了工作,您需要更改选择。
更改选项后,会显示一些值,我会在currentDATA[year]
的最大值上添加最高级别。
但问题是,如果我切换到Something #2
并返回Something #1
,则不会突出显示正确的值。
if(value > prevVal) {
$el.parent().find('span').removeClass('highest');
$el.addClass('highest');
}
有人可以解释一下我做错了吗?
答案 0 :(得分:1)
您必须始终跟踪最高值:
$('select').on('change', function() {
var currentDATA = myJSON[$(this).val()];
var highestVal = 0;
var highestValObj;
for(var year in currentDATA){
for(var val in currentDATA[year]) {
var value = currentDATA[year][val];
var $el = $('.' + val + '_' + year);
$el.html(value);
if(value > highestVal) {
highestVal = value;
highestValObj = $el;
}
}
}
$('.highest').removeClass('highest');
highestValObj.addClass('highest');
});
答案 1 :(得分:1)
Yor prevVal
始终为0.如果您希望代码正常工作,请更改为:
if(value > prevVal) {
prevVal = value;
$el.parent().find('span').removeClass('highest');
$el.addClass('highest');
}
但我会建议你改变prevVal名字。构建逻辑是为了不将当前值与先前值进行比较,应将其与之前所有值中的最高值进行比较。
答案 2 :(得分:1)
首先,prevVal始终为零。所以设置让它在一年中工作。
接下来,您需要将prevVal重置为每年零,以便每个人都能找到它自己的最大值。
$('select').on('change', function() {
var currentDATA = myJSON[$(this).val()];
for(var year in currentDATA){
var prevVal = 0;
console.log(year);
for(var val in currentDATA[year]) {
var value = currentDATA[year][val];
var $el = $('.' + val + '_' + year);
$el.html(value);
if(value > prevVal) {
prevVal = value;
$el.parent().find('span').removeClass('highest');
$el.addClass('highest');
}
}
}
});